以前学过一点C++,这几天看C#的书,看到char这里开始晕了。
请问这个char在C#中的本质是个什么东东?
类型?类?结构?
如果char是一个类型 那么下列代码
char a='a';
Console.WriteLine(char.IsLetter(a));
中的IsLetter是什么意思?类型也可以方法吗?

解决方案 »

  1.   

    是结构体,你可以在vs中,鼠标的光标放到IsLetter方法上,按F12就看到了char的类型。结构体也可以有方法。
      

  2.   


    谢谢!
    不过我还是有点糊涂,既然char是一个结构体,那么下列代码为什么是错的?
    char a='a';
    Console.WriteLine(a.IsLetter(a));
    既然a是结构体char定义的变量,为什么不可以使用它的方法?另外,我自己定义了一个结构体,用该结构体定义了一个变量,里面有个output方法,为什么这个变量又可以使用结构体的output方法呢?代码如下
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;namespace chartest
    {
        public struct test
        {
            int a;
            public void output()
            {
                Console.WriteLine(this.a);
            }
            public test(int a)
            {
                this.a = a;
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                test a1 = new test(10);
                a1.output();
                Console.ReadLine();
            }
        }
    }
      

  3.   

    1、public static bool IsLetter(char c); //这个方法是静态的,当然只能是char.IsLetter('')这样调用了。
    2、结构体的实例当然能这样调用了。如果是静态的方法,还可以test.output();这样调用。
      

  4.   

    char既可以视作一个结构体,也可以视作本机数据类型中的一个字节或者一个双字节。
    无论是当作结构体还是一个字节或两个字节,char作为值类型,经过装箱,都可以像一个对象一样拥有自己的方法。总之,C#是一种面向对象的语言,char可以视作一个对象,int也可以。只是这些类型为本地运算做了优化,它们可以像C/C++一样直接视作一个简单数据类型进行操作。这种优化有一个名词,叫装箱/拆箱。
      

  5.   

    int i = 1;
    string s = i.ToString(); // 在C#中,一个整数(在语法上)都可以视作一个对象。
      

  6.   

    不经过装箱一样可以调用自己的方法,.net里面一切皆是对象。