标签:void eal 超过 static 存在 自己的 交换 XML 使用方法
int i = 10;
int j = 20;
i += j;
j = i - j;
i -= j;
Console.WriteLine("i={0},j={1}", i, j);
*******
*****
***
*
要求:
Console.WriteLine("请输入倒三角的行数");
string lineStr = Console.ReadLine();
bool isNum = int.TryParse(lineStr, out int line);
if (!isNum)
{
Console.WriteLine("非法行数!");
}
else if (line < 3 || line > 21)
{
Console.WriteLine("警告:行数在3和21之间,包含天花板和地板");
}
else
{
for (int i = line; i > 0; i--)
{
//循环打印空格
for (int j = 0; j < line - i; j++)
{
Console.Write(" ");
}
//循环图形
for (int k = 2 * i - 1; k > 0; k--)
{
Console.Write("*");
}
Console.WriteLine();
}
}
int[] nums = { 3, 9, 8, 2, 4, 6, 10, 7 };
要求写出一个尽量简单的方案,找出没有被放入数组的那 2 个数,并在屏幕上打印这 2 个数。
注意:程序不用实现自然数随机放入数组的过程
int[] nums = { 3, 9, 8, 2, 4, 6, 10, 7 };//随机的数组,差1和5
for (int i = 1; i <= 10; i++)
{
//判断遍历到的数是否存在于nums中
if (!Contains(nums, i))
{
Console.WriteLine(i);
}
}
// 判断在nums数组中是否包含value这个元素
static bool Contains(int[] nums, int value)
{
for (int i = 0; i < nums.Length; i++)
{
if (nums[i] == value)
return true;
}
return false;
}
这个做法看起来比参考方式一更复杂,但是运行效率比方式一高,因为方式一会对 nums 数组遍历 10 次,而方式一只遍历一次。
int[] nums = { 3, 9, 8, 2, 4, 6, 10, 7 };
bool[] flags = new bool[10];
foreach (int num in nums)
{
flags[num - 1] = true;
}
for (int i = 0; i < flags.Length; i++)
{
if (!flags[i])
{
Console.WriteLine(i + 1);
}
}
从左向右运算,int + string 是 string,所以是 "78"
扩展:"8"+2+5 是"825",而 "8"+(2+5)是 "87"
public static const int A = 1;
这段代码有错误吗错误:const 不能被修饰为 static
因为定义为常量(const)后就是静态的(static)
string str = null
与 string str = ""
的区别string str = null
是不给他分配内存空间,而 string str = ""
给它分配长度为空字符串的内存空间。string str = null
没有 string 对象,string str = ""
有一个字符串对象。string s3 = string.Empty;
string.Empty 就是在类构造函数中 Empty = "";class Person
{
public int Age { get; set; }
}
int i1 = 20;
int i2 = i1;
i1++;
Console.WriteLine(i2);
Person p1 = new Person();
p1.Age = 20;
Person p2 = p1;
p1.Age++;
Console.WriteLine(p2.Age);
20,21,引用类型和值类型的区别
int i = 10;
Console.WriteLine(i++);
Console.WriteLine(++i);
Console.WriteLine(i=20);
Console.WriteLine(i==20);
i++表达式的值为 i 自增之前的值,所以打印 10。
执行完成后 i 变成 11,执行++i 的时候表达式的值为自增以后的值 12。
Console.WriteLine(i=20);中的 i=20 是 C#中赋值表达式,而“赋值表达式的值为赋值之后左边的值”,因此最后一个就输出 i 赋值后的值 20。
经历过 i=20 之后 i 就编程 20 了,因此 Console.WriteLine(i==20);输出 true
class Person
{
public DateTime BirthDay = DateTime.Now;
static void Main(string[] args)
{
//假如这一刻是1:00:00
Person p1 = new Person();
Console.WriteLine(DateTime.Now);
Thread.Sleep(1000 * 10);
Console.WriteLine(DateTime.Now);
Console.WriteLine(p1.BirthDay);
}
}
01:00:00,1:00:10,01:00:00
因为成员变量的初始化时在对象 new 的时候初始化的,之后不会每次访问成员变量的时候都初始化
有一个 Person 类定义如下
class Person
{
public static int A = 30;
//静态构造函数在static字段初始化完成后执行
static Person()
{
//静态构造函数只执行一次
A++;
}
//字段的初始化赋值代码只是在new一个对象的时候执行,而不是每次用字段的时候都执行
public int B = A++;
public Person()
{
B++;
}
}
下面程序的执行结果是什么?
Person p1 = new Person();
Console.WriteLine(p1.B);//32
Console.WriteLine(Person.A);//32
Console.WriteLine(p1.B);//32
Console.WriteLine(Person.A);//32
Person p2 = new Person();
Console.WriteLine(p2.B);//33
Console.WriteLine(Person.A);//33
int i = 2000;
object o = i;
i = 2001;
int j = (int)o;
Console.WriteLine("i={0},o={1},j={2}", i, o, j);
输出的结果是什么?为什么?
答案:i=2001,o=2000,j=2000
因为 int 是值类型,是复制传递
bool b=false;
if(b=true)
Console.WriteLine("meowv.com");
else
Console.WriteLine("baidu.com");
输出是:meowv.com
因为不是 if(b==true)
b=true 是一个赋值表达式,赋值表达式的值为赋值之后左边的值
Child test = new Child();
Console.WriteLine(test.getName());
class Father
{
private String name = "father";
public String getName()
{
return name;
}
}
class Child : Father
{
private String name = "child";
}
答案:father
public String getName()
{
return name;
}
访问的是 Father 类的 name 字段,字段(成员变量)是不能 override 的。
下列程序的执行结果是什么?
class Child : Father
{
private String name = "child";
}
class Program
{
String str = "good";
char[] ch = { 'a', 'b', 'c' };
public void change(String str, char[] ch)
{
str = "test ok";
ch[1] = 'g';
}
static void Main(string[] args)
{
Program ex = new Program();
ex.change(ex.str, ex.ch);
Console.Write(ex.str + "and");
Console.Write(ex.ch);
}
}
答案:goodandagc
方法内部对参数变量重新指向不会改变外部传入变量的指向;
数组是引用传递,ch[1]=‘g‘改变的是成员变量指向的对象;
String s;
Console.WriteLine("s="+s);
答案:C,局部变量必须初始化才能读取
abstract 可以修饰下面哪些
答案:AB,abstract 类是抽象类;abstract 方法是抽象方法;字段(成员变量)是不能写成 abstract 的,意义的;枚举也一样不能 abstract。
在 C#中,下列不能通过编译的语句是?
答案:D,5.5 是 double 类型,因此无法隐式转换为精度低的 float
如下 C#代码段,没有错误的是?
答案:D
有关类 Demo,哪些描述是正确的?
public class Demo : Base
{
private int count;
protected void addOne()
{
count++;
}
}
答案:AC,成员变量 int 类型默认值是 0,所以 A 对 B 错。
“超类”就是“父类”,父类肯定无法写改变子类 private 变量的代码,所以 C 对;
精确保存一个值为“53.21458961”的数需要什么数据类型?
答案:C,小数只能用 float 或者 double,double 精度比 float 高,所以要精确保存肯定首选 double
下列哪种说法不正确?
答案:C,“接收消息”是比较学术的说法,其实指的“其他类调用这个类的方法”
其他类能够调用的父类的方法,肯定也是可以通过子类来调用的,所以 A 是正确的;
B 也是正确的,这就是多态,子类如果 override 了父类的方法,则父类类同样方法的实现可能不一样;
C 是肯定是错误的,子类继承了父类的方法,哪怕子类一个方法不写,也是和父类方法一样多;
D 语法上是这样的
当父类的引用变量指向子类对象时,对于同名的方法调用哪个?
答案:B,分析多态程序题的口诀:父类类型变量可以指向子类类型对象,子类可以 override 父类的方法,调用方法的时候调用子类的实现;
下面的代码下划线的位置,应该填什么类型?
int x = 4;
____ i = (x > 4) ? 99.9 : 9;
答案:A,由于冒号两边数据类型不一致(左边是小数,所以应该是 double),编译器将三元运算符表达式的类型处理成精度更高的类型 double
下列哪种说法是正确的?
答案:ABD,“实例方法”指的就是“非静态方法”,“类方法”指的就是“static 方法”
“直接调用”指的就是“类名.方法名”这种不通过对象调用的方法;
对于下面的代码运行之后 foo 的值是什么?
int index = 1;
bool[] test = new bool[3];
bool foo = test[index];
答案:C,bool 数组元素默认值是 false,int 数组元素默认值是 0,对象数组元素默认值是 null
对于下面的代码运行之后 foo 的值是什么?
int index = 1;
string[] test = new string[3];
string foo = test[index];
答案:B,对象类型数组的默认值是 null
属性可以对设值、取值的过程进行非法值控制,比如年龄禁止设值负数,而字段则不能进行这样的设置。
虽然一般情况下 get 读取的值就是 set 设置的值,但是可以让 get 读取的值不是 set 设置的值的,极端的例子如下:
class Person
{
public int Age
{
get
{
return 3;
}
set
{
}
}
}
Person p1 = new Person();
p1.Age = 30;
p1.Age++;
Console.Write(p1.Age);//输出3
value,它的类型和属性所声明的类型相同。
System.Object
接口中不能声明字段只能声明方法,属性、索引器和事件最终都编译生成方法。
接口中不能定义字段(也叫成员变量)
把构造函数设置为 private,设置一个 public、static 的对象实例
public class FileManager
{
private FileManager() { }
public readonly static FileManager Instance = new FileManager();
}
写递归要确定两个:递归的终止条件;递归表达式。
总结递归规律:F(n)=F(n-2)+F(n-1) Fibonacci 数列
static int F(int n)
{
if (n == 1)
return 1;
if (n == 2)
return 1;
return F(n - 2) + F(n - 1);
}
int n = Convert.ToInt32(Console.ReadLine());
if (n <= 0)
{
Console.WriteLine("必须大于0");
return;
}
if (n == 1)
{
Console.WriteLine("1");
return;
}
int[] data = new int[n];
data[0] = 1;
data[1] = 1;
for (int i = 2; i < n; i++)
{
data[i] = data[i - 1] + data[i - 2];
}
Console.WriteLine(data[n - 1]);
都不能被直接实例化,都可以通过继承实现其抽象方法。
接口支持多继承;抽象类不能实现多继承。
接口只能定义方法的声明,不能定义方法的实现;抽象类既可以定义方法的声明,还可能提供实现。
接口只包含方法(Method)、属性(Property)、索引器(Index)、事件(Event)的签名,但不能定义字段和包含实现的方法;
抽象类可以定义字段、属性、包含有实现的方法。
C#中的构造函数无法继承,子类如果想声明和父类一样的构造函数必须显式声明和调用;
子类无法继承父类的构造函数,因此也就没有 override 的说法。子类可以定义和父类参数一样的构造函数,如果想调用父类的这个构造函数,则必须显式使用 base 去调用。
答案:D,数组下标从 0 开始,因此最后一个元素为“数组长度-1”,int 数组元素默认值是 0;
答案:C,一个类实现多个接口,一个接口可以从多个接口继承,一个类只能有一个父类。
答案:ACD,注意“类方法”指的是“static 方法”,“实例方法”指的是“非 static 方法”
类的 static 方法中可以调用别的类的 static 方法呀,所以 A 错
class Person
{
static void A()
{
//这是不行的
B();
//这样当然可以。所以不能说一定不能调非static,如果new对象就能调用非static方法。所以D错
new Person().B();
}
void B()
{
}
}
下列说法错误的有?
答案:BCD,数组不是原始数据类型,而是一种对象;数组的长度声明后就不能改变;
下面哪些语句能够正确地生成 5 个空字符串?
答案:AB,""和 null 不一样,""是长度为 0 的字符串对象,也就是“空字符串”,null 表示“没有对象”
for(int i=0 ;i<5 ;a[i++]="");按照 for 循环的“三段的作用”是可以实现给 a 数组每个元素赋值为""的作用,虽然这种写法不常见;
下面的程序中,temp 的最终值是什么?
long temp = (int)3.9;
temp% = 2;
答案:B,double 转换为 int 是截断,不会四舍五入。(int)3.9 转换为 3,再赋值给 long 类型的 temp,隐式转换为 long 类型的 3
temp%=2 等价于 temp=temp%2; 3 除以 2 的余数是 1
答案:C,一个类有抽象方法则类必须是抽象类,但是抽象类可以没有抽象方法(虽然这么说没什么意义,但是语法上是允许的);
答案:B
构造函数不能被继承,因此不能被重写,但可以被重载。
(1)short s1 = 1; s1 = s1 + 1;
(2)short s1 = 1; s1 += 1;
abstract、实例化
String 在进行运算时(如赋值、拼接等)会产生一个新的实例,而 StringBuilder 则不会。所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用 StringBuilder,不要使用 String
string s="abc"; s="123";
String 是不可变的在这段代码中,s 原先指向一个 String 对象,内容是 "abc",然后我们将 s 指向"123",那么 s 所指向的那个对象是否发生了改变呢?答案是没有。这时,s 不指向原来那个对象了,而指向了另一个 String 对象,内容为"123",原来那个对象还存在于内存之中,只是 s 这个引用变量不再指向它了。
需要实现 IEnumerable 接口的类型
using 可以声明 namespace 的引入
可以实现非托管资源的释放,实现了 IDisposiable 的类在 using 中创建,using 结束后会自动调用该对象的 Dispose 方法,释放资源
答案:A,虽然说 id 是 numeric 类型的,但是也可以和‘13‘等这样的字符串比较的,数据库会完成类型转换,也会自动做空格的截断处理。所以 B、D 都是对的
null 判断要使用 is null,不能用=,但是写成=null 也不会报错。
但是 A 中‘‘这个空字符串是不能转换为整数的,所以 A 是错误的;
select * from T_cities where name like ‘北京%‘
用户根据系统的程序构造非法的参数从而导致程序执行不是程序员期望的恶意 SQL 语句。使用参数化的 SQL 就可以避免 SQL 注入。
select abs(DateDiff(ss,GetDate(), ‘2012-01-01 00:00:00‘))
Connection、Command、DataAdapter、DataSet、DataReader
答案:C,用 ExecuteScalar 也可以执行 select 语句,比如 select count(*) from t
答案:B、C、D,Fill 是用来填充 DataTable、DataSet 的
答案:B,D
一个 DataSet 中可以包含多个 DataTable,一个 DataTable 中可以包含多个 DataRow
Sum()
、Count()
select a.S# from (select s#,score from SC where C#='001') a,(select s#,score
from SC where C#='002') b where a.score>b.score and a.s#=b.s#;
select S#,avg(score) from sc group by S# having avg(score) >60;
select Student.S#,Student.Sname,count(SC.C#),sum(score)
from Student left Outer join SC on Student.S#=SC.S#
group by Student.S#,Sname
select count(distinct(Tname)) from Teacher where Tname like '李%';
select Student.S#,Student.Sname
from Student where S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平');
select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and SC.C#='001'and exists( Select \* from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002');
select S#,Sname from Student
where S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平' group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname='叶平'));
select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2
from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2 <score;
select S#,Sname from Student where S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score>60);
select Student.S#,Student.Sname
from Student,SC
where Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);
select S#,Sname from Student,SC where Student.S#=SC.S# and C# in select C# from SC where S#='1001';
select distinct SC.S#,Sname
from Student,SC
where Student.S#=SC.S# and C# in (select C# from SC where S#='001');
update SC set score=(select avg(SC_2.score)
from SC SC_2
where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname='叶平';
select S# from SC where C# in (select C# from SC where S#='1002')
group by S# having count(*)=(select count(*) from SC where S#='1002');
delete SC from course ,Teacher where Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='叶平';
Insert SC select S#,'002',(Select avg(score) from SC where C#='002') from Student where S# not in (Select S# from SC where C#='002');
SELECT S# as 学生ID
,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 数据库
,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='001') AS 企业管理
,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='006') AS 英语
,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均成绩
FROM SC AS t
GROUP BY S#
ORDER BY avg(t.score)
SELECT L.C# As 课程ID,L.score AS 最高分,R.score AS 最低分
FROM SC L ,SC AS R
WHERE L.C# = R.C# and
L.score = (SELECT MAX(IL.score)
FROM SC AS IL,Student AS IM
WHERE L.C# = IL.C# and IM.S#=IL.S#
GROUP BY IL.C#)
AND
R.Score = (SELECT MIN(IR.score)
FROM SC AS IR
WHERE R.C# = IR.C#
GROUP BY IR.C#
);
SELECT t.C# AS 课程号,max(course.Cname)AS 课程名,isnull(AVG(score),0) AS 平均成绩
,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分数
FROM SC T,Course
where t.C#=course.C#
GROUP BY t.C#
ORDER BY 100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) DESC
SELECT SUM(CASE WHEN C# ='001' THEN score ELSE 0 END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) AS 企业管理平均分
,100 * SUM(CASE WHEN C# = '001' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS 企业管理及格百分数
,SUM(CASE WHEN C# = '002' THEN score ELSE 0 END)/SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) AS 马克思平均分
,100 * SUM(CASE WHEN C# = '002' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END) AS 马克思及格百分数
,SUM(CASE WHEN C# = '003' THEN score ELSE 0 END)/SUM(CASE C# WHEN '003' THEN 1 ELSE 0 END) AS UML平均分
,100 * SUM(CASE WHEN C# = '003' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '003' THEN 1 ELSE 0 END) AS UML及格百分数
,SUM(CASE WHEN C# = '004' THEN score ELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) AS 数据库平均分
,100 * SUM(CASE WHEN C# = '004' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) AS 数据库及格百分数
FROM SC
SELECT max(Z.T#) AS 教师 ID,MAX(Z.Tname) AS 教师姓名,C.C# AS 课程ID,MAX(C.Cname) AS 课程名称,AVG(Score) AS 平均成绩
FROM SC AS T,Course AS C ,Teacher AS Z
where T.C#=C.C# and C.T#=Z.T#
GROUP BY C.C#
ORDER BY AVG(Score) DESC
--[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩
SELECT DISTINCT top 3
SC.S# As 学生学号,
Student.Sname AS 学生姓名 ,
T1.score AS 企业管理,
T2.score AS 马克思,
T3.score AS UML,
T4.score AS 数据库,
ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 总分
FROM Student,SC LEFT JOIN SC AS T1
ON SC.S# = T1.S# AND T1.C# = '001'
LEFT JOIN SC AS T2
ON SC.S# = T2.S# AND T2.C# = '002'
LEFT JOIN SC AS T3
ON SC.S# = T3.S# AND T3.C# = '003'
LEFT JOIN SC AS T4
ON SC.S# = T4.S# AND T4.C# = '004'
WHERE student.S#=SC.S# and
ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)
NOT IN
(SELECT
DISTINCT
TOP 15 WITH TIES
ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)
FROM sc
LEFT JOIN sc AS T1
ON sc.S# = T1.S# AND T1.C# = 'k1'
LEFT JOIN sc AS T2
ON sc.S# = T2.S# AND T2.C# = 'k2'
LEFT JOIN sc AS T3
ON sc.S# = T3.S# AND T3.C# = 'k3'
LEFT JOIN sc AS T4
ON sc.S# = T4.S# AND T4.C# = 'k4'
ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);
SELECT SC.C# as 课程ID, Cname as 课程名称
,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85]
,SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70]
,SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60]
,SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS [60 -]
FROM SC,Course
where SC.C#=Course.C#
GROUP BY SC.C#,Cname;
SELECT 1+(SELECT COUNT( distinct 平均成绩)
FROM (SELECT S#,AVG(score) AS 平均成绩
FROM SC
GROUP BY S#
) AS T1
WHERE 平均成绩 > T2.平均成绩) as 名次,
S# as 学生学号,平均成绩
FROM (SELECT S#,AVG(score) 平均成绩
FROM SC
GROUP BY S#
) AS T2
ORDER BY 平均成绩 desc;
SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数
FROM SC t1
WHERE score IN (SELECT TOP 3 score
FROM SC
WHERE t1.C#= C#
ORDER BY score DESC
)
ORDER BY t1.C#;
select c#,count(S#) from sc group by C#;
select SC.S#,Student.Sname,count(C#) AS 选课数
from SC ,Student
where SC.S#=Student.S# group by SC.S# ,Student.Sname having count(C#)=1;
select count(Ssex) as 男生人数 from Student group by Ssex having Ssex='男';
select count(Ssex) as 女生人数 from Student group by Ssex having Ssex='女';
SELECT Sname FROM Student WHERE Sname like ‘张%‘;
select Sname,count(_) from Student group by Sname having count(_)>1;
select Sname, CONVERT(char (11),DATEPART(year,Sage)) as age
from student
where CONVERT(char(11),DATEPART(year,Sage))='1981';
select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC;
select Sname,SC.S# ,avg(score)
from Student,SC
where Student.S#=SC.S# group by SC.S#,Sname having avg(score)>85;
Select Sname,isnull(score,0)
from Student,SC,Course
where SC.S#=Student.S# and SC.C#=Course.C# and Course.Cname='数据库'and score <60;
SELECT SC.S#,SC.C#,Sname,Cname
FROM SC,Student,Course
where SC.S#=Student.S# and SC.C#=Course.C#;
SELECT distinct student.S#,student.Sname,SC.C#,SC.score
FROM student,Sc
WHERE SC.score>=70 AND SC.S#=student.S#;
select c# from sc where scor e <60 order by C#;
select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score>80 and C#=‘003‘;
select count(*) from sc;
select Student.Sname,score
from Student,SC,Course C,Teacher
where Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T# and Teacher.Tname='叶平' and SC.score=(select max(score) from SC where C#=C.C# );
select count(\*) from sc group by C#;
select distinct A.S#,B.score from SC A ,SC B where A.Score=B.Score and A.C# <>B.C#;
SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数
FROM SC t1
WHERE score IN (SELECT TOP 2 score
FROM SC
WHERE t1.C#= C#
ORDER BY score DESC
)
ORDER BY t1.C#;
select C# as 课程号,count(*) as 人数
from sc
group by C#
order by count(*) desc,c#
select S#
from sc
group by s#
having count(*) > = 2
select C#,Cname
from Course
where C# in (select c# from sc group by c#)
select Sname from Student where S# not in (select S# from Course,Teacher,SC where Course.T#=Teacher.T# and SC.C#=course.C# and Tname='叶平');
select S#,avg(isnull(score,0)) from SC where S# in (select S# from SC where score <60 group by S# having count(*)>2)group by S#;
select S# from SC where C#=‘004‘and score <60 order by score desc;
delete from Sc where S#=‘001‘and C#=‘001‘;
String、Int32、Boolean 等都属于.Net CTS 中定义的类,而 string、int、bool 相当于 C#中对这些类定义的别名,是 C#的关键字,编译器把 int 翻译成 Int32。
不可以。因为非 static 方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而 static 方法调用时不需要创建对象,可以直接调用。也就是说,当一个 static 方法被调用时,可能还没有创建任何实例对象,如果从一个 static 方法中发出对非 static 方法的调用,那个非 static 方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个 static 方法内部不能发出对非 static 方法的调用。
索引器是 C#中的这种语法:public string this[string s]
注意和数据库中的“索引”区分开。
参数的个数和类型都是任意的。加分的补充回答:反编译可以看出,索引器的内部本质上就是 set_item、get_item 方法。
基础知识:
public string this[string s],通过 get、set 块来定义取值、赋值的逻辑
索引可以有多个参数、参数类型任意
索引可以重载。
如果只有 get 没有 set 就是只读的索引。
索引其实就是 set_Item、get_Item 两个方法。
答案:C,声明索引器的语法是 public string this[int index],因此索引器没有名字,this 不能算名字。
String 类是 sealed 类,密封类不可以继承子类。
Object 是引用类型,但是它的子类 Int32 竟然不能去 Object 能去的“要求必须是引用类型”的地方,违反了继承的原则,所以需要把 Int32 装在 Object 中才能传递。
object obj = null;//引用类型
obj = 1;//装箱,boxing。把值类型包装为引用类型。
int i1 = (int)obj;//拆箱。unboxing
int i=10;
object obj = i;
int j = obj;
在 inboxing(装箱)时是不需要显式的类型转换的,不过 unboxing(拆箱)需要显式的类型转换,所以第三行代码应该改为:int j = (int)obj;
GC 是.Net 的垃圾收集器,可以进行内存资源的回收,程序员无需关心资源的回收,当一个对象没有任何引用的时候就可以被回收了。一个对象可以被回收并不意味着一定会被立即回收,GC 会选择时机进行回收。可以调用 GC.Collect()让 GC 立即回收。GC 不能回收非托管资源,对于非托管资源一般都实现了 IDisposable 接口,然后使用 using 关键字进行资源的回收。
[serializable]
答案:D,XML 不仅可以用来生成结构化文档,还可以在系统之间进行数据传输,还可以用作配置文件。
public struct Point
{
public int x;
public int y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
}
Point p1 = new Point(100, 100);
Point p2 = p1;
p1.x = 200;
Console.WriteLine("{0},{1}", p1.x, p2.x);
200,100,结构体是复制传递的
答案:A,C,D
答案:C
要让人家感觉你对.Net 开发很熟,所以,不能仅仅只列谁都能想到的那些东西,要多列你在做项目中涉及的那些东西。就写你最近写的那些程序中涉及的那些类。
List<T>
static、const、delegate
string n = Regex.Match(str, @"(\d+)").Groups[1].Value;
File、DataSet、ArrayList、Math
Func<T>
与 Action<T>
的区别Func<T>
是有返回值的泛型委托,Action<T>
是没有返回值的泛型委托。
答案:D,abstract 是抽象类,允许有子类,而 sealed 类不能有子类,所以不能把 abstract 跟 sealed 这个“断子绝孙”的家伙放到一起,因此 A 是错误的;抽象方法不能有方法体,即使{}也是空方法体,所以 B 是错误的;
委托
static、const
GC
标签:void eal 超过 static 存在 自己的 交换 XML 使用方法
原文地址:https://www.cnblogs.com/meowv/p/11436344.html