关于C#的一些小知识
问题一 :是否可以从一个static方法内部发出对非static方法的调用?
不行,
可以这样理解
static修饰的方法可以直接用类名调用
非static修饰的方法必须用类new出对象才能调用
当我们用类名直接调用时,可能这个类的对象并没有new。
如果这时候static方法里调用非static的方法就会出现空指针异常,
当然这种错误编译时就不会通过。
错误代码演示:
class Program
{ public int fact(int n)
{
if (n <= )
return ;
else
return n * fact(n-);
} static void Main(string[] args)
{
//利用递归来计算阶乘
fact //看到了吗?fact是根本打不出来的。 }
}
正确代码演示:
class Program
{ static int fact(int n)
{
if (n <= )
return ;
else
return n * fact(n-);
} static void Main(string[] args)
{
//利用递归来计算阶乘
Console.WriteLine(fact()); }
}
问题二:继承接口之后必须要全部继承接口里面的内容吗?
是的,必须全部继承。
我写一个接口:
namespace 结构测试
{
interface Interface1
{
void first();
void second();
}
}
我在控制台去实现这个接口的第一个方法,看看情况:
namespace 结构测试
{
class Program:Interface1
{
static void Main(string[] args)
{ } public void first()
{
Console.WriteLine("我只想实现这一个方法");
} }
}
运行,结果报错:

问题三:抽象类到底是怎么用的?
为什么要写抽象类?所谓抽象不就是把某些物体的共同特点集合起来吗?比如你可以吃饭,睡觉,学习。你的同学也可以吃饭,睡觉,学习。好了,你们都具有这些共同的特征,不只是你们,所有的人都这样,这就可以抽象出一个类--Person。那么抽象类该怎么用呢?
抽象类Class1:
namespace 抽象类
{
abstract class Class1
{
public abstract void start();
public void update()
{
Console.WriteLine("我是抽象类里面的不抽象方法");
}
}
}
Class1这个抽象的类我给他写了两个方法,一个是抽象方法start,一个是非抽象方法update.注意到了没,抽象方法是不允许有方法体的。
下面我们再来写一个普通的类Class2来继承抽象类Class1:
namespace 抽象类
{
class Class2:Class1
{
public override void start()
{
Console.WriteLine("我继承了抽象方法");
}
public void strt()
{
update();
}
}
}
可以看到,抽象类Class1里面的抽象方法start被继承并重构了方法体,而且非抽象方法update也可以直接继承。
下面来控制台应用程序:
namespace 抽象类
{
class Program
{
static void Main(string[] args)
{
Class2 jj =new Class2();
jj.start();
jj.strt();
}
}
}
普通类Class2实例化了一个对象jj,然后jj可以调用start方法和strt方法。
注意事项:抽象类不能实例化。抽象方法不能有方法体。
问题四:string类型创建的字符串的内容是不可变的
先上图,咱们看图说话。

比如我最初定义了一个字符串s,初始值为 "蜀云泉" 。
string s = "蜀云泉";
我们可以看到这个字符串s的内容是存放在堆里面的,而s存放在栈里面只是起一个引用的作用。可以看到我在图上s画了一条虚线指向 “蜀云泉” 。现在我执行新的操作:
s = s + "喜欢写博客";
好了,s并没有直接在蜀云泉那块内存增加我写的字符串,而是新开辟了一块内存去重新存储。这时s指向了那块新的存储空间。而那个旧的存储空间“蜀云泉”过一段时间之后系统会自动把它清理掉。
问题五:字符串怎么写成多行?
有时候字符串实在是太长了,全部写在一行吧,既不美观也不方便查看,所以怎么写成多行呢?有两种方法:
方法一:
string Str="字符串1"+
"字符串2";
方法二:
string Str=@"字符串1
字符串2";
问题6:输入日期怎么判断是周几?
int days = (int)Convert.ToDateTime("时间").DayOfWeek;
周日是0,其它的数字对应。
关于C#的一些小知识的更多相关文章
- 蓝牙Bluetooth技术小知识
蓝牙Bluetooth技术以及广泛的应用于各种设备,并将继续在物联网IoT领域担任重要角色.下面搜集整理了一些关于蓝牙技术的小知识,以备参考. 蓝牙Bluetooth技术始创于1994年,其名字来源于 ...
- HTML+CSS中的一些小知识
今天分享一些HTML.CSS的小知识,希望能够对大家有所帮助! 1.解决网页乱码的问题:最重要的是要保证各个环节的字符编码一致! (1)编辑器的编辑环境的字符集(默认字符集):Crtl+U 常见的编码 ...
- iOS APP开发的小知识(分享)
亿合科技小编发现从2007年第一款智能手机横空出世,由此开启了人们的移动智能时代.我们从一开始对APP的陌生,到现在的爱不释手,可见APP开发的出现对我们的生活改变有多巨大.而iOS AP ...
- Unix系统小知识(转)
Unix操作系统的小知识 2.VI添加行号/翻页/清屏 .在对话模式时(即输完Esc再输入: ),输入“:set number”可以将编辑的文本加上行号.跟玩俄罗斯方块一样方便的上下左右移动箭头的快捷 ...
- salesforce 零基础开发入门学习(十)IDE便捷小知识
在这里介绍两个IDE的便捷开发的小知识. 一) 本地调试 由于salesforce代码只能提交以后才能调试,所以很多时候调试代码很麻烦.新版增加了一个特性:即可以在本地调试相关的代码或者查看相关代码运 ...
- Jquery:小知识;
Jquery:小知识: jQuery学习笔记(二):this相关问题及选择器 上一节的遗留问题,关于this的相关问题,先来解决一下. this的相关问题 this指代的是什么 这个应该是比较好理 ...
- HTML小知识---Label
今天知道了一个html小知识: <input type="checkbox" id="chkVersion" /> ...
- Unicode和汉字编码小知识
Unicode和汉字编码小知识 将汉字进行UNICODE编码,如:“王”编码后就成了“\王”,UNICODE字符以\u开始,后面有4个数字或者字母,所有字符都是16进制的数字,每两位表示的256以内的 ...
- Java异常的一个小知识
有以下两个代码: package com.lk.A; public class Test3 { public static void main(String[] args) { try { int a ...
- 12个你未必知道的CSS小知识
虽然CSS并不是一种很复杂的技术,但就算你是一个使用CSS多年的高手,仍然会有很多CSS用法/属性/属性值你从来没使用过,甚至从来没听说过. 1.CSS的color属性并非只能用于文本显示 对于CSS ...
随机推荐
- Leetcode——171.Excel表列序号【水题】
@author: ZZQ @software: PyCharm @file: leetcode171_Excel表列序号.py @time: 2018/11/22 15:29 要求: 给定一个Exce ...
- Find Amir CodeForces - 805C (贪心+思维)
A few years ago Sajjad left his school and register to another one due to security reasons. Now he w ...
- Docker Volume
http://www.cnblogs.com/sammyliu/p/5932996.html http://dockone.io/article/128
- [cnblog新闻]历史性时刻:云硬件支出首次高于传统硬件
https://news.cnblogs.com/n/617487/ 据调研公司 IDC 声称,2018 年第三季度云硬件支出占 IT 总收入的 50.9%. 知名调研公司 IDC 声称,面向云的 I ...
- 金蝶特性配置(超级BOM)
特性配置 特性物料 物料和特性的对应关系 自动新增物料的系统设置 特性物料自动新增 自动新增的特性配置方案 相关表 ICPlan_CharacteristicEntry
- canvas高斯模糊算法
对于模糊图片这个效果的实现,其实css3中的filter属性也能够实现,但是这个属性的兼容性不是很好,所以我们通常不用这种方法实现,而使用canvas配合JS实现. <span style=&q ...
- __new__ __init__区别
1 class A(object): 2 def __init__(self,*args, **kwargs): 3 print "init A" 4 def __new__(cl ...
- ava 8中的新功能特性
正如我之前所写的,Java 8中的新功能特性改变了游戏规则.对Java开发者来说这是一个全新的世界,并且是时候去适应它了. 在这篇文章里,我们将会去了解传统循环的一些替代方案.在Java 8的新功能特 ...
- Java之List使用方法
package basic; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; impor ...
- C# 之抽象类和抽象方法
概述:abstract 关键字 抽象类不能被实例化,抽象方法不能有方法体,抽象类中的所有抽象方法必须在子类中重写(override ),一个抽象类可以同时包含抽象方法和非抽象方法. abstract ...