• C#基础 基本语法2


    1、
    String myString="A string";
    char myChar=myString[1];

    String myString="A string";
    char[] mychars=myString.ToCharArry();//为了获得一个可写的char数组
    foreach(char character in myString)//后面就可以使用myString.Length获取元素的个数
    {
    Console.WriteLine("{0}",character);
    }
    2、
    String userResponse=Console.ReadLine();
    if(userRespose.ToLower()=="yes")
    {
    //Act on response.
    }//这个命令与其他命令一样,并没有真正的改变它的字符串。
    如果用户添加了空格怎么样,用string.Trim();命令来处理下在起作用。string.TrimStart();和string.TrimEnd();
    //<string>/PadX(<desiredLength>);//从字符串的左边或者右边添加字符,是字符串达到指定长度。
    3、删除字符:
    char[] trimChars={'','e','s'};
    string yserResponse=Console.ReadLine();
    usrResponse=uerRespponse.ToLower();
    userResponse=userResponse.Trim(trimChars);
    if(usrResponse=="y")
    {
    //Act on response.
    }
    4、myString="Aligned";
    myString=myString.PadLeft(10);//将myString中把3个空格添加到单词Aligned左边,使用与放置包含数字的字符串。
    myString="Aligned";
    myString=myString.PadLeft(10,'-');//开头加三个短横线
    5、由使用自动完成的功能,将string转换成数组
    string myString = "This is a test.";
    char[] separator = {' '};
    string[] myWords;
    myWords = myString.Split(separator);//把字符串的每个空格分开,会得到其子字符串,即得到包含单个字符的数组
    foreach (string word in myWords)
    {
    Console.WriteLine("{0}",word);
    }
    Console.ReadKey();
    6、enum color:short
    {
    Red,Orange,Yellow,Green,blue,Indigo,Violet,Black,White
    }//这个枚举类型可以包含256项,如果给枚举项使用重复的值,就可以始终更多的项
    7、class Program
    {
    static void Write()
    {
    Console.WriteLine("Text output from function.");
    }
    static void Main(String[] args)
    {
    Write();
    Console.ReadKey();
    }
    }
    8、定义函数static double GetVal()
    {
    return 3.2//这个返回必须是一个值,还可以是隐式转换类型。
    }//return可以用在通过void关键字声明的函数中(没有返回值),如果这么做函数就会立即终止
    9、//参数数组的使用,用params定义就可以了,参数可以任意
    static int SumVals(params int[] vals)
    {
    int sum = 0;
    foreach(int val in vals)
    {
    sum += val;
    }
    return sum;
    }
    static void Main(string[] args)
    {
    int sum=SumVals(1,5,2,9,8);
    Console.WriteLine("Summed Values ={0}",sum);
    }
    10、引用参数和值参数
    static void ShowDouble(int val)
    {
    val*=2;
    Console.WriteLine("val doubled={0}",val);
    }
    int myNumber=5;
    Console.WriteLine("myNumber={0}",myNumber);
    ShowDouble(myNumber);
    Console.WriteLine("myNumber={0}",myNumber);//这样输出后都是 5 10 5

    static void ShowDouble(ref int val)
    {
    val*=2;
    Console.WriteLine("val doubled={0}",val);
    }
    int myNumber=5;
    Console.WriteLine("myNumber={0}",myNumber);
    ShowDouble(ref myNumber);
    Console.WriteLine("myNumber={0}",myNumber);//这样输出后都是 5 10 10
    用作ref的参数变量有两个限制,函数可能改变引用参数的值,所以必须调用非常量变量。所以不能有常量定义。其次必须是初始化过的变量。
    out的用法与ref用法相同,都是在函数定义和函数调用中用作参数的修饰符。
    把未赋值的变量用作ref参数是非法的,但是可以把未赋值的变量用作out参数。在函数使用out参数时out参数必须看作未赋值。
    11、如果全局变量和局部变量重名,全局变量就会被屏蔽。
    若定义全局变量,可以在局部变量中Program.myString.
    12、Main()的可选参数args是从应用程序的外部接受信息的方法,这些信息在运行期间指定,其形式是命令行参数。利用args参数可以编写以类似方式工作的控制台应用程序。
    13、结构函数
    Struct customerName
    {
    public string firstName,lastname;
    }
    customerName myCustomer;
    myCustomer.firstName="John";
    myCustomer.LastName="Franklin";
    Console.WriteLine("{0} {1}",mycustomer.firstName,mycustomer.lastname);
    ----------------------------------------------------------------------------------------
    struct customerName
    {
    public string firstName,lastName;
    public string Name()
    {
    return firstName+" "+lastName;
    }
    }
    customerName myCustomer;
    myCustomer.firstName="John";
    myCustomer.lastName="Franklin";
    Console.WriteLine(mycustomer.Name());//结构函数
    14、重载//让多个函数操作不同类型的变量//也可以根据参数的个数来区分
    class Program
    {
    static int MaxValue(int[] intArray)
    {
    int maxVal = intArray[0];
    for (int i = 1; i < intArray.Length;i++ )
    {
    if (intArray[i] > maxVal)
    maxVal = intArray[i];
    }
    return maxVal;
    }
    static double MaxValue(double[] doubleArray)
    {
    double maxVal = doubleArray[0];
    for (int i = 1; i < doubleArray.Length;i++ )
    {
    if (doubleArray[i] > maxVal)
    maxVal = doubleArray[i];
    }
    return maxVal;
    }
    static void Main(string[] args)
    {
    int[] myArray = {1,8,3,6,2,5,9,3,0,2};
    int maxVal = MaxValue(myArray);
    Console.WriteLine("The maximum value in myArray is{0}",maxVal);
    Console.ReadKey();
    double result=MaxValue//敲这个的时候就会显示两个函数的选择
    }
    }
    15、重载调用值参数和引用参数
    static void ShowDouble(ref int val){ }//ShowDouble(ref val);
    static void ShowDouble(int val){ }//ShowDouble(val);
    -----------------------------------------------------------------------------------------
    16、委托,就像选择一个要使用的查件一样,把他们传递给函数委托就可以控制函数的执行。
    委托时可以把引用存储为函数的类型,委托的声明类似于函数,但不带函数体。要有deleget关键字
    delegate double ProcessDelegate(double paraml,double param2);//该定义与函数定义相同
    static double Multiply(double param1,double param2) //但是不是用于函数式用于委托
    {
    return param1 * param2;
    }
    static double Divide(double param1,double param2)
    {
    return param1 / param2;
    }
    static void Main(string[] args)
    {
    ProcessDelegate process;//用新的委托类型声明一个变量
    Console.WriteLine("Enter 2 numbers sparated with a comma:");
    string input = Console.ReadLine();
    int commaPos = input.IndexOf(',');
    double param1 = Convert.ToDouble(input.Substring(0,commaPos));
    double param2 = Convert.ToDouble(input.Substring(commaPos+1,input.Length - commaPos - 1));
    Console.WriteLine("Enter M to myltiply or D to divide:");
    input = Console.ReadLine();
    if (input == "M")
    {
    process = new ProcessDelegate(Multiply);
    }
    else
    process = new ProcessDelegate(Divide);
    Console.WriteLine("Result:{0}",process(param1,param2));
    Console.ReadKey();
    17、OOP面向对象编程。非常重要的领域Windows Foems应用程序。
    OOP技术以结构、数据的含义以及数据和数据之间的交互操作为基础
    UML中myprinter:Printer是Printer的一个实例。
    UML中方法,AddSugar(int amount:byte):byte Out和inout大致对应于第六章的Out和ref
    18、方法:用于表示对象中的函数,这些函数调用的方式与其他函数相同,使用返回值和参数的方式也相同。<Stirng>.Length和<String>.ToUpper()注意一个属性一个方法。构造对象这个初始化过程称为构造阶段,删除一个对象时,常常要执行一些清理工作,例如释放内存由析构函数完成。
    19、使用new关键字来调用构造函数
    CupOfCoffee myCup= new CupOfCoffee();
    使用非默认的函数创造对象
    CupOfCoffee myCup=new CupOdCoffee("Blue Mountain");
    //在类外部的代码不能使用私有构造函数实例化对象。
    20、析构函数:一般不需要析构函数的代码,而由默认的析构函数自动执行。但不能依赖析构函数释放对象实例使用的资源,因为不在使用某个对象后,该资源会长时间被该对象占用。
    21、Console.WriteLine();或者Convert.ToString();方法是静态的,根本不需要实例化,因为这些构造函数是不可公共访问的。静态成员可以在类的实例之间共享,所以可以将他们看做是类的全局对象,,静态属性、静态字段可以访问独立于任何对象实例的数据,静态方法可以执行与对象类型相关、但与对象实例无关的命令。在使用静态成员时,甚至不需要实例化对象。在UML中类的静态成员用下划线表示。
    21、使用类的静态成员时,要预先初始化这些成员,在声明时,可以给静态成员提供一个初始值,有时需要执行更复杂的初始化,或者在赋值、执行某些方法之前执行某些操作。使用静态构造函数可以执行此类的初始化任务,一个类只能有一个静态构造函数,该构造函数不能有访问修饰符,也不带任何参数,静态构造函数不能直接调用。只能在下列情况执行:
    创建包含静态构造函数的类的实例时
    访问包含静态构造函数的类的静态成员时
    22、接口是把公共实例(非静态)方法和属性组合起来,以封装特定功能的一个集合,一旦定义了一个接口,就可以在类总实现它,这样就可以支持接口所指定的所有属性和成员。咖啡事例中AddSugar()、Milk、Sugar、Instant组合到一个接口中,这个接口称为IHotDrink,然后就可以在其他对象上使用该接口,对象扔保留自己的属性。一个类可以支持多个接口,多个类也可以支持同一个接口。
    23、using关键字会在代码块中初始化使用中药资源的对象,会在这个代码块的末尾自动调用Dispose()方法。
    using(<VariableName>)
    {
    ...
    }
    或者把初始化对象作为using语句的一部分
    using(<ClassName><VariableName>=new <ClassName>()){}
    //在这两种情况下中使用变量,并在代码块的末尾自动删除。自动调用dispose()
    24、任何类都可以从另一个类中继承,这个类拥有他继承的类的所有成员、C#中的对象仅能直接派生于一个基类,当然基类也可以有自己的基类。
    25、一个成员只能由基类和派生类访问而不能由外部代码访问。protected只有派生类才能访问protected成员,对于外部代码这个可访问性与私有成员一样:外部代码不能访问private和protected成员。,
    26、基类的成员可以是虚拟的,也就是成员可以由继承他的类重写。派生类可以提供成员的其他的实现代码,这种实现代码不会删除原来的代码,仍可以在类中访问原来的代码,但外部代码不能访问他们,如果没有提供其他的实现方式,通过派生类使用成员的外部代

  • 相关阅读:
    数据特征分析:5.相关性分析
    数据特征分析:4.正态分布与正态性检验
    go-文件操作
    图-迪杰斯特拉算法
    图-克鲁斯卡尔算法
    图-普利姆算法
    go-客户信息关系系统
    go-家庭收支记账软件例子
    采用邻接表表示图的深度优先搜索遍历
    广度优先搜索遍历连通图
  • 原文地址:https://www.cnblogs.com/d685600/p/3650359.html
Copyright © 2020-2023  润新知