zoukankan      html  css  js  c++  java
  • C#学习(三)

    本周继续学习了一些定义类的基本知识,还学习了如何开始开发一个WP8.1应用程序。一起来看一下吧!

    一、定义类时的基本知识

    1. 可选的程序变量(optional arguments)

      在C#3.0时还不允许可选择参数传递,但在C#4.0中就加入了这一特性。optional arguments:即在定义函数时给参数赋予默认值,在调用函数时可以不必再传入实参,实例如下:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace lesson_3
     8 {
     9     class Program
    10     {
    11         static void TestParam(int a, float b = 5.5f) //定义时给参数赋予默认值
    12         {
    13             Console.WriteLine("the first arguments is : {0}, the first arguments is : {1}", a, b);
    14         }
    15 
    16         static void Main(string[] args)
    17         {
    18             TestParam(5);   //调用时可以只传入一个参数
    19         }
    20     }
    21 }

    2. 参数的值传递、ref址传递、out

      值传递类似于C++;ref址传递相当于C++中&的用法;out与ref类似,不同的是out会在变量未初始化时给变量赋值。

     1 static void GetTime( int h, int m, int s )
     2 {
     3       h = 12;
     4       m = 34;
     5       s = 56;
     6 }
     7 static void Main(string[] args)
     8 {
     9     int h1=0, m1=0, s1=0;
    10     GetTime(h1, m1, s1);  //函数执行后变量的值仍然是h1=0, m1=0, s1=0
    11 }
     1 static void GetTime(ref int h, ref int m, ref int s)
     2 {
     3   h = 12;
     4   m = 34;
     5   s = 56;
     6 }
     7 static void Main(string[] args)
     8 {
     9   int h1=0, m1=0, s1=0;
    10   GetTime(ref h1, ref m1, ref s1);  
    11   Console.WriteLine("h1={0}, m1={1}, s1={2}", h1, m1, s1);    //执行结果h1=12, m1=34, s1=56
    12 }
     1 static void GetTime(out int h, out int m, out int s)
     2 {
     3     h = 12;
     4     m = 34;
     5     s = 56;
     6 }
     7 static void Main(string[] args)
     8 {
     9     int h1, m1, s1;  //在函数体外初始化没意义,因为使用out传递时肯定会被清空
    10     GetTime(out h1, out m1, out s1);  
    11     Console.WriteLine("h1={0}, m1={1}, s1={2}", h1, m1, s1);    //执行结果h1=12, m1=34, s1=56
    12 }

    out与ref区别:

      两者都是按地址传递的,使用后都将改变原来的数值。很多人在论坛上解释说out是按数值传递,是错误的。简单的测试后可以知道out使用也能改变数值的,所以肯定是按照地址传递的。
      其次:rel可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所以你必须初始化一次。这个就是两个的区别,或者说就像有的网友说的,rel是有进有出,out是只出不进。经典!!! 

      (此段来自百度知道,讲的很清楚!)

    3. 类的静态成员:静态变量、静态方法;静态类。

      类的静态变量和静态方法需使用类名直接调用,而不需实例化之后调用。

      静态构造函数:静态构造函数是C#的一个新特性,其实好像很少用到。不过当我们想初始化一些静态变量的时候就需要用到它了。这个构造函数是属于类的,而不是属于哪里实例的,就是说这个构造函数只会被执行一次。也就是在创建第一个实例或引用任何静态成员之前,由.NET自动调用。

      在使用静态构造函数的时候,以下几点应该注意:(引用自http://www.cnblogs.com/michaelxu/archive/2007/03/29/693401.html)

      1、静态构造函数既没有访问修饰符,也没有参数。因为是.NET调用的,所以像public和private等修饰符就没有意义了。      

      2、是在创建第一个类实例或任何静态成员被引用时,.NET将自动调用静态构造函数来初始化类,也就是说我们无法直接调用静态构造函数,也就无法控制什么时候执行静态构造函数了。

      3、一个类只能有一个静态构造函数。

      4、无参数的构造函数可以与静态构造函数共存。尽管参数列表相同,但一个属于类,一个属于实例,所以不会冲突。

      5、最多只运行一次。

      6、静态构造函数不可以被继承。

      7、如果没有写静态构造函数,而类中包含带有初始值设定的静态成员,那么编译器会自动生成默认的静态构造函数。

    4. 诸如this指针的运用,函数重载(overload),重写(overriding)等与C++类似,不再说了。

    二、开始开发一个WP8.1应用程序

    1. 新建一个WP8.1应用程序,选择模板 -- Visual C# -- 应用商店应用 -- Windows Phone应用,选择“空白应用”。

    2. 双击屏幕右侧“解决方案”中的“MainPage.xaml”,即可出现图形界面。

    3. 点击屏幕最左侧“工具箱” -- “常用XAML控件”,找到“Button”,直接拖到模拟图形的手机中,同样的方法再找到“TextBlock”,拖入黑色屏幕中。

    4. 使用屏幕右下角的属性给Button和TextBlock分别命名,并定义Button上的文本和TextBlock的默认文本。

    5. 双击屏幕右下角button的属性里的click后的空白框,在弹出的函数编辑页面写入按下button后触发的动作:HelloWorldText.Text = "Hello World!";

     编辑按下button后触发的动作:HelloWorldText.Text = "Hello World!";

    6. 点击运行

    7. 运行结果

    结束。

  • 相关阅读:
    mysql基础-01
    Delphi 和键盘有关的API函数(Keyboard Input)
    Delphi System单元-Odd- 判断是否是奇数
    Delphi 键盘API GetKeyState、GetAsyncKeyState -获取键盘 / 按键值Key的状态
    Delphi 全局热键KeyPress 和 热键 API(RegisterHotKey、UnRegisterHotKey、GlobalAddAtom、GlobalDeleteAtom、GlobalFindAtom)
    Delphi XE Android platform uses-permission[2] AndroidManifest.xml 配置
    Delphi XE Android platform uses-permission[1] 权限列表
    Delphi XE Andriod 文件后缀对应MIME类型
    Delphi XE RTL Androidapi 单元
    Delphi XE FMX TFmxObject 类 和 单元
  • 原文地址:https://www.cnblogs.com/yongheng20/p/4376347.html
Copyright © 2011-2022 走看看