C#类基本知识

1.访问修饰符:在C#中有4个访问修饰符

public:可以在任何地方被访问

internal:只能在本项目中被访问,一个项目可以包含多个文件。

protected:只能在本类和子类中被访问

private:只能在本类中被访问。

再类这个级别,不写访问修饰符默认为internal

在类里面,方法外定义变量、方法前不佳访问修饰符默认为private。

namespace 类基本知识1
{
    class Person //默认为internal
    {
        string name;//默认为private
        int age;

        public void Test()
        {

        }
    }
}

2.类的成员:字段、属性、方法

属性:通俗的说,就是定义一个public的具有get/set方法的变量,这个变量用于保护一个私有变量,即保护字段

举例:

namespace 类基本知识1
{
    class Person 
    {
        string name;

        public Person(string name)
        {
            this.name = name;
        }

        public string Name //右键重构--封装字段。通过属性来访问私有的字段,好处很多
        {
            get { return name; }
            //set { name = value; }
        }
        int age;

        public int Age
        {
            get { return age; }
            set
            {
                if (value > 0)
                {
                    age = value;
                }
                else
                {
                    age = 0;
                }
            }
        }

        public void Test()
        {

        }
    }
}

属性默认都有get/set方法,当对属性赋值时,会调用set方法,赋的值默认存在set的value里。当对属性读取是,调用get方法

通过属性保证私有字段一定合法 

属性通过有无get/set可分为:只读、只写、读写

允许外部访问的变量(字段)一定要声明为属性。

注意:当属性设置为只读时,即能防止随便改动值,但是怎么赋初值呢?

   借助构造函数啦,跟C++ 的构造函数相同,不做过多介绍。至于C# 的析构函数,可以不用写,系统本身有垃圾回收机制,当系统资源紧缺时会帮我们回收垃圾

3.C#的类图查看器。

3.形参前加params,编译器会自动把参数转换成数组形式,叫可变参数,必须放在参数表最后一个.

典型例子就是public static void WriteLine(string format, params object[] arg);

static void Main(string[] args)
        {

            int[] numbers = { 1, 2, 3, 4, 5 };
            int sum1=Sum(numbers);
            Console.WriteLine(sum1);

            //或者直接传数也可以
            int sum2 = Sum(1, 2, 3);
            Console.WriteLine(sum2);
            
        }
        static int Sum(params int[] myArr)
        {
            int iSum=0;
            for (int i=0;int<myArr.Length;i++)
            {
                iSum+=myArr[i];
            }
            return iSum;
        }

4.命名空间:项目名一般默认为命名空间名,命名空间不允许以数字开头,一旦项目名为数字开头,系统会自动给命名空间名前加_.

.net命名空间是逻辑上的包含关系,不是物理上的。(实质上不是一个命名空间包含另一个命名空间,只是定义的时候写成namespace System.Linq;

System是根命名空间

---不在同一个命名空间下的类,不能被直接访问,要想访问别的命名空间下的类有两种方法

1)通过using引用对方的命名空间

2)写全称.命名空间.类名

5.C#中的string类型可以看作是字符数组,可以通过字符下边来访问每一位。而C++中字符串类型就是字符数组

            string s = "hello,world";
            Console.WriteLine(s[2]);//访问的是l

 C#中的字符串有一个重要特性:不可变性,字符串一旦声明就不可以再改变。只能通过索引来读取指定位置的char,不能对指定位置的char进行修改。

可通过string的ToCharArray()方法来实现修改         

           string s = "hello,world";
            char[] chars = s.ToCharArray();
            chars[1] = 'i';
            s = new string(chars);
            Console.WriteLine(s);

s="hello1“ s="world1”;
注意:字符串的值具有不可改变性,复制时新开辟了空间,变量里存的是字符串首地址,赋值时只是把变量指向改变了,内存中本来的值还在那块空间里。

5.Ctrl+.快捷提示

原文地址:https://www.cnblogs.com/Yogurshine/p/2949708.html