你的位置:首页 > ASP.net教程

[ASP.net教程]C#问题


1.结构体里面是否可以有属性?

  可以有属性。实测代码以及截图。

In C#, we can use the following statement to convert a string s to an integer num 124

  A.int num = Convert.ToInt32(s);

  B.int nym = Int32.Parse(s);

  C.int num = s.ToInt();(不可以)

  D.int num = int.Parse(s);(测试可以过)

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Fraction{  public struct StructTest  {    private int x;    public int X    {      get { return x; }      set { x = value; }    }    public StructTest(int _x)    {      x = _x;    }  }  class Program  {    static void Main(string[] args)    {      StructTest str = new StructTest();      str.X = 1;      Console.WriteLine(str.X);      string s = "123";      int num1 = Convert.ToInt32(s);      int num2 = Int32.Parse(s);      //int num3 = s.ToInt();      int num4 = int.Parse(s);      Console.WriteLine("num1="+num1);      Console.WriteLine("num2="+num2);      //Console.WriteLine(num3);      Console.WriteLine("num4="+num4);      Console.Read();    }  }}

  Property 可声明在 class, struct, interface里!

  使用属性的好处:

    允许只读或者只写字段;

    可以在访问时验证字段;

    接口和实现的数据可以不同;

    替换接口中的数据。

  

2.参数传递的方式:按值传递、按引用传递。没有按位置传递、没有按名称传递。

3.LINQ查询:LINQ to Object, LINQ to

对于LINQ to Object可以查询数组等里面的数据;

对于LINQ to SQL可以查询SQL能够查询的表中的数据;

对于LINQ to

对于LINQ to DataSet可以查询DataSet中的数据;

3.委托的形式

  f = delegate(int x){return x + 1;};

  f = x => x+1;

  

测试代码:

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Lambda{  class Program  {    static void Main(string[] args)    {      int sum = 0;      Func<int, int> f1 = x => 2 * x + 1;      Func<int, int, bool> f2 = (x, y) => x > y;      Func<string, int, string> f3 = (x, y) => x.Substring(y);      Func<int, int> f4 = (x) => sum += x;      Action a1 = () => { System.Console.WriteLine("HelloWorld"); };      Action <int> a2 = (x) => { System.Console.WriteLine(x); };      Action <bool> a3 = (x) => { System.Console.WriteLine(x); };      Action<string> a4 = (x) => { System.Console.WriteLine(x); };      for (int i = 1; i <= 10; i++ )      {        f4(i);      }      a2(sum);      a1();      a2(f1(1));      a3(f2(3, 5));      a4(f3("Zhengpengfei", 5));      System.Console.Read();    }  }}

4.内嵌类型可以是类、结构、结构体、枚举、委托

  具体见PPT

5.类与结构体、类与接口、重载(overloading)与重写(overriding)、虚方法与抽象方法、托管代码与非托管代码

  

6.Constants can be declared static (True)

  在C#中const与static不能同时修饰变量;

7.装箱boxing:值类型转换为引用类型;

  拆箱unboxing:引用类型转为值类型。

8.An interface member is implemented or _inherited__from a base class

  接口的成员要么自己定义要么继承自父类。

  接口不能包含常量、字段、操作符、构造函数、析构函数、任何静态成员、方法的实现

9.What is the difference between private assembly and public assembly?

  private assembly只能被一个应用程序使用、保存在应用程序目录中、不要求强命名、无法签名;

  public assembly可以被所用应用程序使用、保存在全局程序集中、必须有一个强命名、可以签名

  另外强命名包括四个部分:Assembly的命名、Assembly的版本号、Assembly的文化属性、Assembly的公钥。

10.Which of the following are correct ways to pass a parameter to a attribute?

1)       By value   2)by reference   3)by position     4)by name

A 1 ,2      B 3,4     C 1,2,3,4     D1,2,3