关于“.WriteLine()是否需要这么多重载”的笔记
public static void WriteLine(string format, params object[] arg);
public static void WriteLine(string format, object arg0);
public static void WriteLine(string format, object arg0, object arg1);
public static void WriteLine(string format, object arg0, object arg1, object arg2);
public static void WriteLine(string format, object arg0, object arg1, object arg2, object arg3);
delegate void E(string format, object o1);
E e = Console.WriteLine;
如在之后按params重载的思路,使用e("{0}, {1}", "a", "b")将无法编译通过。对于指定参数的委托,如需要使用到WriteLine,非params的重载是应该存在的;
2. 并非所有的CLI都支持params的语法;
3. 从性能的角度来说,每次调用public static void WriteLine(string format, params object[] arg),都将分配托管堆空间用于存储对象,哪怕是如下代码:
static void Main(string[] args)
{
DemoFunc("a", "b", "c");
DemoFunc("a", "b", "c");
} public static void DemoFunc(params string[] val)
{
}
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// 代码大小 78 (0x4e)
.maxstack
.locals init ([] string[] CS$$)
IL_0000: nop
IL_0001: ldc.i4.
IL_0002: newarr [mscorlib]System.String
IL_0007: stloc.
IL_0008: ldloc.
IL_0009: ldc.i4.
IL_000a: ldstr "a"
IL_000f: stelem.ref
IL_0010: ldloc.
IL_0011: ldc.i4.
IL_0012: ldstr "b"
IL_0017: stelem.ref
IL_0018: ldloc.
IL_0019: ldc.i4.
IL_001a: ldstr "c"
IL_001f: stelem.ref
IL_0020: ldloc.
IL_0021: call void ConsoleApplicationDemo2.Program::DemoFunc(string[])
IL_0026: nop
IL_0027: ldc.i4.
IL_0028: newarr [mscorlib]System.String
IL_002d: stloc.
IL_002e: ldloc.
IL_002f: ldc.i4.
IL_0030: ldstr "a"
IL_0035: stelem.ref
IL_0036: ldloc.
IL_0037: ldc.i4.
IL_0038: ldstr "b"
IL_003d: stelem.ref
IL_003e: ldloc.
IL_003f: ldc.i4.
IL_0040: ldstr "c"
IL_0045: stelem.ref
IL_0046: ldloc.
IL_0047: call void ConsoleApplicationDemo2.Program::DemoFunc(string[])
IL_004c: nop
IL_004d: ret
} // end of method Program::Main
关于“.WriteLine()是否需要这么多重载”的笔记的更多相关文章
- 初步C++运算符重载学习笔记<3> 增量递减运算符重载
初步C++运算符重载学习笔记<1> 初探C++运算符重载学习笔记<2> 重载为友元函数 增量.减量运算符++(--)分别有两种形式:前自增++i(自减--i).后自增i ...
- 初探C++运算符重载学习笔记<2> 重载为友元函数
初探C++运算符重载学习笔记 在上面那篇博客中,写了将运算符重载为普通函数或类的成员函数这两种情况. 以下的两种情况发生.则我们须要将运算符重载为类的友元函数 <1>成员函数不能满足要求 ...
- Java之方法重载(笔记)
Java是根据参数类型和个数的不同实现重载. 1.当参数类型是基本类型,但不完全匹配. void test(int i) { } void test(float f) { } public stati ...
- C++对运算符进行重载学习笔记
1. 一个类的成员函数是暗含着 this 指针的,eg; #include<iostream> using namespace std; class A{ public: A(){ x ...
- .NET 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]
方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...
- C#一元运算重载的深入理解
using System; using System.Diagnostics; using System.Text; using System.Collections; using System.Co ...
- C#面向对象——方法的重载及构造函数、静态对象。
namespace nameclass2 { class Class2 //方法的重载 { public void Function( string s) { Console.WriteLine(s) ...
- [你必须知道的.NET]第十七回:貌合神离:覆写和重载
本文将介绍以下内容: 什么是覆写,什么是重载 覆写与重载的区别 覆写与重载在多态特性中的应用 1. 引言 覆写(override)与重载(overload),是成就.NET面向对象多态特性的基本技术之 ...
- C#知识点记录
用于记录C#知识要点. 参考:CLR via C#.C#并发编程.MSDN.百度 记录方式:读每本书,先看一遍,然后第二遍的时候,写笔记. CLR:公共语言运行时(Common Language Ru ...
随机推荐
- Java从入门到放弃——03.循环和判断
本文目标 选择结构:if,switch 循环结构:for , foreach ,while,do while 跳出语句:break,continue 1.选择结构 if: if(判断语句){ } s ...
- (原创)Problem B: JRM的自动机
Description JRM自称是自动机之鼻祖,今天他又发明了一个自动机.人称自动复读机,宣称比LGQ的复读机的性能好无数倍.这个复读机有很多功能,你可以教会他 如何回答一个问题,还可以询问他问题, ...
- 【TED演讲】阿帕玛・饶:(幽默的高科技艺术)
身为艺术家和TED Fellow的阿帕玛・饶对熟悉的事物以惊奇的幽默的方式进行再次想像.通过和索伦・普尔兹的合作,她创作出一系列高科技的艺术作品-一个会发邮件的打字机,一个让你在屏幕上消失而跟踪拍摄你 ...
- CSS选择器及CSS样式表
前言 牛腩新闻发布系统中记忆最深的就是各种CSS选择器各种CSS样式,这些选择器之间肯定有它的优先级,包括CSS样式也一样,也是有它的优先级,本文介绍一些各种CSS选择器各种CSS样式以及它们的优先级 ...
- loj #6261 一个人的高三楼 FFT + 组合数递推
\(\color{#0066ff}{ 题目描述 }\) 一天的学习快要结束了,高三楼在晚自习的时候恢复了宁静. 不过,\(HSD\) 桑还有一些作业没有完成,他需要在这个晚自习写完.比如这道数学题: ...
- 5.Min Stack(能返回最小数的栈)
Level: Easy 题目描述: Design a stack that supports push, pop, top, and retrieving the minimum element ...
- [Java]如何把Soap Message装成一个String对象
代码片段 // Create transformer TransformerFactory tff = TransformerFactory.newInstance(); Transformer tf ...
- C#工具类之字符串扩展类
/// <summary> /// 字典串帮忙类 /// </summary> public static class StringHelper { /// <summa ...
- Flask&&人工智能AI -- 6 人工智能初识,百度AI,图灵机器人
一.人工智能初识,百度AI的创建与应用 参考连接:https://www.cnblogs.com/xiao987334176/p/9620113.html 1. 百度ai开放平台 2. AipSpee ...
- 事务背书 ACID, CAP, BASE
A atomicity 原子性 一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成, C consistency 一致性 在事务开始之前和事务结束以后,数据库的完整性没有被破 ...