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. 运行结果

    结束。

  • 相关阅读:
    .net注册iis
    hdu 1081To The Max
    hdu 1312Red and Black
    hdu 1016Prime Ring Problem
    hdu 1159Common Subsequence
    hdu 1372Knight Moves
    hdu 1686Oulipo
    hdu 1241Oil Deposits
    hdu 1171Big Event in HDU
    hdu 4006The kth great number
  • 原文地址:https://www.cnblogs.com/yongheng20/p/4376347.html
Copyright © 2011-2022 走看看