zoukankan      html  css  js  c++  java
  • 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+.快捷提示

  • 相关阅读:
    行政区划代码和关键字提取
    清洗数据之地理纬度
    第三周学习进度
    性能战术在代码中的体现
    第二周学习进度
    淘宝网-质量属性场景
    如何做一名好的软件架构师
    寒假学习笔记16
    寒假学习笔记15
    寒假学习笔记14
  • 原文地址:https://www.cnblogs.com/Yogurshine/p/2949708.html
Copyright © 2011-2022 走看看