关于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 ...
随机推荐
- ModSecurity is an open source, cross-platform web application firewall (WAF) module.
http://www.modsecurity.org/ ModSecurity is an open source, cross-platform web application firewall ( ...
- Eclipse的Jar包解压出System.js里String与Boolean定义分号可有可无吗?
Eclipse的Jar包解压出System.js里String与Boolean定义分号可有可无吗? org.eclipse.wst.jsdt.core_1.3.300.v201410221502\li ...
- JMeter性能测试基础 (4)-使用JMeter录制测试脚本
在进行压力测试时,由于很多web页面包含了Ajax异步请求等内容,为模拟用户真实输入,除了对html的访问外,还需要将其它的访问考虑入内,这时最好的办法就是对实际访问过程中的所有请求进行录制. 例如, ...
- js堆栈
//栈只存地址 堆存对象和地址: 浅拷贝: 深拷贝: 队列类似于过道,走廊:
- mysql distinct 去重
在使用MySQL时,有时需要查询出某个字段不重复的记录,这时可以使用mysql提供的distinct这个关键字来过滤重复的记录,但是实际中我们往往用distinct来返回不重复字段的条数(count( ...
- Oracle PLSQL 客户端 连接Oracle12.2 出现权限问题的解决办法以及绿色版Oracle客户端的使用.
1. 同事反馈登录最新的oracle12.2 的数据库时登录不上报错: 2. 记得当时查过资料, Oracle 在12.2 增加了客户端连接数据库的加密级别 比较早的oracle客户端比如11.2.0 ...
- [读书笔记]Linux命令行与shell编程读书笔记03 文件系统等
1. 文件系统的种类 ext ext2 ext3 ext4 JFS XFS 其中ext3 开始支持journal日志模式 与raid卡类似 有 数据模式 排序模式 以及回写模式 数据模式最安全 回写 ...
- [转载]oracle 高水位线详解
一.oracle 高水位线详解 出处: https://www.cnblogs.com/linjiqin/archive/2012/01/15/2323030.html 一.什么是水线(High Wa ...
- jdk1.8 HashMap的扩容resize()方法详解
/** * Initializes or doubles table size. If null, allocates in * accord with initial capacity target ...
- 51nod蜥蜴与地下室(1498)(暴力搜索)
题意:一个数组s,再给你a,b值,除了s1和sn外,你可以攻击其他元素,你对这个元素的伤害为a,那么他两边的元素会受到b的牵连伤害,si-a,si-1-b,si+1-b: 求最小的次数,使得这个数组的 ...