Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
skill_tree_dotnet
提交
04292013
S
skill_tree_dotnet
项目概览
CSDN 技术社区
/
skill_tree_dotnet
通知
30
Star
6
Fork
4
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
2
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
skill_tree_dotnet
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
2
Issue
2
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
04292013
编写于
1月 28, 2022
作者:
Admini$trat0r
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
添加1..NET初阶\3.C#特性\1.C#3.0特性(隐式类型本地变量,分部方法,对象和集合初始值设定项)
上级
2b4f2f9b
变更
7
显示空白变更内容
内联
并排
Showing
7 changed file
with
295 addition
and
0 deletion
+295
-0
data/1..NET初阶/3.C#特性/1.C#3.0特性/ImplicitType.json
data/1..NET初阶/3.C#特性/1.C#3.0特性/ImplicitType.json
+8
-0
data/1..NET初阶/3.C#特性/1.C#3.0特性/ImplicitType.md
data/1..NET初阶/3.C#特性/1.C#3.0特性/ImplicitType.md
+32
-0
data/1..NET初阶/3.C#特性/1.C#3.0特性/ObjectAndCollectionInitializers.json
...T初阶/3.C#特性/1.C#3.0特性/ObjectAndCollectionInitializers.json
+8
-0
data/1..NET初阶/3.C#特性/1.C#3.0特性/ObjectAndCollectionInitializers.md
...NET初阶/3.C#特性/1.C#3.0特性/ObjectAndCollectionInitializers.md
+114
-0
data/1..NET初阶/3.C#特性/1.C#3.0特性/PartialMethod.json
data/1..NET初阶/3.C#特性/1.C#3.0特性/PartialMethod.json
+8
-0
data/1..NET初阶/3.C#特性/1.C#3.0特性/PartialMethod.md
data/1..NET初阶/3.C#特性/1.C#3.0特性/PartialMethod.md
+53
-0
data/1..NET初阶/3.C#特性/1.C#3.0特性/sample/Program.cs
data/1..NET初阶/3.C#特性/1.C#3.0特性/sample/Program.cs
+72
-0
未找到文件。
data/1..NET初阶/3.C#特性/1.C#3.0特性/ImplicitType.json
0 → 100644
浏览文件 @
04292013
{
"type"
:
"code_options"
,
"author"
:
"Gao996"
,
"source"
:
"ImplicitType.md"
,
"exercise_id"
:
"41982620620243ef956a14e95c584d2d"
,
"notebook_enable"
:
false
}
\ No newline at end of file
data/1..NET初阶/3.C#特性/1.C#3.0特性/ImplicitType.md
0 → 100644
浏览文件 @
04292013
# C# 3.0 特性 隐式类型本地变量
从C# 3.0 开始,在方法范围内声明的变量可以具有隐式“类型”var。隐式类型本地变量为强类型,就像用户已经自行声明该类型,但编译器决定类型一样。
```
var i = “Hello CSDN!”;```看这句代码,在下列选项中i的类型是:
## 答案
```
csharp
string
```
## 选项
### A
```
csharp
int
```
### B
```
csharp
char
```
### C
```
csharp
double
```
\ No newline at end of file
data/1..NET初阶/3.C#特性/1.C#3.0特性/ObjectAndCollectionInitializers.json
0 → 100644
浏览文件 @
04292013
{
"type"
:
"code_options"
,
"author"
:
"Gao996"
,
"source"
:
"ObjectAndCollectionInitializers.md"
,
"exercise_id"
:
"7bb7e2531e7a426cbd731720fa33d0ba"
,
"notebook_enable"
:
false
}
\ No newline at end of file
data/1..NET初阶/3.C#特性/1.C#3.0特性/ObjectAndCollectionInitializers.md
0 → 100644
浏览文件 @
04292013
# C# 3.0 特性 对象和集合初始值设定项
使用对象初始值设定项,你可以在创建对象时向对象的任何可访问字段或属性分配值,而无需调用后跟赋值语句行的构造函数。 比如下面的Cat类,以往创建对象可能
```
csharp
Cat
cat
=
new
Cat
();
cat
.
Name
=
"Tom"
;
cat
.
Age
=
10
;
```
当然可以直接为对象设置初始值,这样可以简化对象的构造,如下例子:
```
csharp
public
class
Cat
{
// 自动实现的属性
public
int
Age
{
get
;
set
;
}
public
string
Name
{
get
;
set
;
}
public
Cat
()
{
}
public
Cat
(
string
name
)
{
this
.
Name
=
name
;
}
}
```
```
csharp
Cat
cat
=
new
Cat
{
Age
=
10
,
Name
=
"Fluffy"
};
Cat
sameCat
=
new
Cat
(
"Fluffy"
){
Age
=
10
};
```
上面这段代码示例了使用具有命名类型Cat的对象初始值设定项以及如何调用无参数构造函数。当然也可以为匿名类型设置初始值:
```
csharp
var
testA
=
new
{
name
=
"Gao"
,
age
=
996
};
```
下面是一个List集合的初始化例子:
```
csharp
List
<
int
>
digits
=
new
List
<
int
>
{
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
};
```
除了分配字段和属性外,对象初始值设定项还可以设置索引器,如下例子:
```
csharp
public
class
MatrixTest
{
private
readonly
double
[,]
storage
=
new
double
[
3
,
3
];
public
double
this
[
int
row
,
int
column
]
{
get
{
return
storage
[
row
,
column
];
}
set
{
storage
[
row
,
column
]
=
value
;
}
}
}
```
```
csharp
var
identity
=
new
MatrixTest
()
{
[
0
,
0
]
=
1.0
,
[
0
,
1
]
=
0.0
,
[
0
,
2
]
=
0.0
,
[
1
,
0
]
=
0.0
,
[
1
,
1
]
=
1.0
,
[
1
,
2
]
=
0.0
,
[
2
,
0
]
=
0.0
,
[
2
,
1
]
=
0.0
,
[
2
,
2
]
=
1.0
};
```
在了解了对象和集合初始值的设定之后,实现对Dictionary初始值设定,以下选项错误的是:
## 答案
```
csharp
var
numbers
=
new
Dictionary
<
int
,
string
>()
{
7
=
"seven"
,
9
=
"nine"
,
13
=
"thirteen"
};
```
## 选项
### A
```
csharp
var
numbers
=
new
Dictionary
<
int
,
string
>()
{
[
1
]
=
"one"
,
[
9
]
=
"nine"
,
[
13
]
=
"thirteen"
};
```
### B
```
csharp
var
numbers
=
new
Dictionary
<
int
,
string
>()
{
{
19
,
"nineteen"
},
{
23
,
"twenty-three"
},
{
42
,
"forty-two"
}
};
```
### C
```
csharp
var
numbers
=
new
Dictionary
<
int
,
string
>()
{
};
```
\ No newline at end of file
data/1..NET初阶/3.C#特性/1.C#3.0特性/PartialMethod.json
0 → 100644
浏览文件 @
04292013
{
"type"
:
"code_options"
,
"author"
:
"Gao996"
,
"source"
:
"PartialMethod"
,
"exercise_id"
:
"4a743fa6bf5e49cf8fff28ed0f9e6bef"
,
"notebook_enable"
:
false
}
\ No newline at end of file
data/1..NET初阶/3.C#特性/1.C#3.0特性/PartialMethod.md
0 → 100644
浏览文件 @
04292013
# C# 3.0 特性 分部方法
分部方法在分部类型的一部分中定义了签名,并在该类型的另一部分中定义了实现。比如WPF和WinForm的窗体就是用partial关键字定义的分部类,一部分代码可以实现控件的初始化,一部分可以去实现具体方法等。
```
csharp
partial
class
PartialClassTest
{
readonly
string
str
=
"Hello CSDN!"
;
partial
void
PartialMethodTest
();
public
void
Display
()
{
PartialMethodTest
();
}
}
partial
class
PartialClassTest
{
partial
void
PartialMethodTest
()
{
Console
.
WriteLine
(
str
);
}
}
```
上面这段代码示例了分部类和方法,执行
```Display()```
方法在下列选项中可以打印出的字符串是:
## 答案
```
csharp
Hello
CSDN
!
```
## 选项
### A
```
csharp
str
```
### B
```
csharp
null
```
### C
```
csharp
抛出异常
```
\ No newline at end of file
data/1..NET初阶/3.C#特性/1.C#3.0特性/sample/Program.cs
浏览文件 @
04292013
...
...
@@ -63,5 +63,76 @@ public static class Extensions
}
// 隐式类型本地变量
var
i
=
“
Hello
CSDN
!”
;
// 分部方法
partial
class
PartialClassTest
{
readonly
string
str
=
"Hello CSDN!"
;
partial
void
PartialMethodTest
();
public
void
Display
()
{
PartialMethodTest
();
}
}
partial
class
PartialClassTest
{
partial
void
PartialMethodTest
()
{
Console
.
WriteLine
(
str
);
}
}
// 对象和集合初始值设定项
public
class
Cat
{
// 自动实现的属性
public
int
Age
{
get
;
set
;
}
public
string
Name
{
get
;
set
;
}
public
Cat
()
{
}
public
Cat
(
string
name
)
{
this
.
Name
=
name
;
}
}
Cat
cat
=
new
Cat
{
Age
=
10
,
Name
=
"Fluffy"
};
Cat
sameCat
=
new
Cat
(
"Fluffy"
){
Age
=
10
};
var
testA
=
new
{
name
=
"Gao"
,
age
=
996
};
List
<
int
>
digits
=
new
List
<
int
>
{
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
};
public
class
MatrixTest
{
private
readonly
double
[,]
storage
=
new
double
[
3
,
3
];
public
double
this
[
int
row
,
int
column
]
{
get
{
return
storage
[
row
,
column
];
}
set
{
storage
[
row
,
column
]
=
value
;
}
}
}
var
identity
=
new
MatrixTest
()
{
[
0
,
0
]
=
1.0
,
[
0
,
1
]
=
0.0
,
[
0
,
2
]
=
0.0
,
[
1
,
0
]
=
0.0
,
[
1
,
1
]
=
1.0
,
[
1
,
2
]
=
0.0
,
[
2
,
0
]
=
0.0
,
[
2
,
1
]
=
0.0
,
[
2
,
2
]
=
1.0
};
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录