首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏C# 编程

    使用IFormattable接口来实现字符串格式化

    public string FirstName { set; get; } public string LastName { set; get; } } 并让Person类继承IFormattable ,代码如下: class Person:IFormattable { public string FirstName { set; get; } public format, IFormatProvider formatProvider) { //关键代码,后面给出 } } 这里将会列出需要实现IFormattable formatType == typeof(ICustomFormatter)) return this; return null; } } 三、实现Person类IFormattable = typeof(ICustomFormatter)) return this; return null; } } class Person:IFormattable

    1K00发布于 2017-12-25
  • 来自专栏明丰随笔

    浅谈.Net Framework中string.Format原理

    ,后面传入的填充对象必须要实现IFormattable接口。 定义Person类,并实现IFormattable接口: public class Person : IFormattable { public string Name { get; set; } 针对IFormattable接口,我们总结一下: 对于两种序号,不管是哪种格式的序号: 1. 如果填充的参数实现IFormattable接口,即使是简单格式符也和特殊格式符一样,会调用填充对象实现的IFormattable接口的ToString方法。 .Net Framework中的源码逻辑: IFormattable formattable = item as IFormattable; if (formattable !

    1K10发布于 2019-07-15
  • 来自专栏GreenLeaves

    C# 自定义类型通过实现IFormattable接口,来输出指定的格式和语言文化的字符串(例:DateTime)

    为了能使调用者在调用对象实例的ToString()方法的时候,选择格式和语言文化,该对象应该实现System.IFormattable接口,接口代码如下: // // 摘要: / - 或 - null 引用(在 Visual Basic 中为 Nothing),用于使用为 System.IFormattable 实现的类型定义的默认格式。 Guid是实现IFormattable接口,具体的实现如下: public unsafe string ToString(string format, IFormatProvider provider) DateTime实现了IFormattable接口,所以它可以自定义地构造我们想要的DateTime字符串,具体实现如下: 第一步: ? 4、IFormattable接口实现方法参数解析 (1)、IFormatProvider参数 DateTime默认的ToString()方法 ?

    1.4K30发布于 2018-08-01
  • 来自专栏分布式系统和大数据处理

    类型自定义格式字符串

    本文将循序渐进地讨论ToString(),以及相关的IFormattable、IFormatProvider以及ICustomFormatter接口。 Microsoft显然想到了这一问题,并为我们提供了IFormattable接口。当你作为一名类型设计者,期望为你的用户提供自定义的格式化ToString()时,可以实现这个接口。 类型设计者的工作在这里就完结了,现在让我们看下对于这个实现了IFormattable的类型,类型的用户该如何使用自己定义的方法对对象进行字符串格式化。 在类型外部提供自定义格式字符串的能力 现在我们站在一个类型用户的角度来思考一下:很多时候,类型的设计者并没有为类型实现IFormattable接口,此时我们该如何处理呢? 如果类型实现了IFormattable接口,我们可以在类型上调用ToString()方法,传递IFormatProvider对象;如果类型没有实现IFormattable接口,我们可以通过String.Format

    82830发布于 2018-09-30
  • 来自专栏hbbliyong

    泛型介绍(接上一篇,具体的事例随后呈上)

    例: Public struct Nullable<T>:IFormattable,IComparable,IComparable<Nullable<T>>,INullable where T:struct EntityDictionary<TKey,TValue>: System.Collections.Generic.Dictionary<TKey,TValue> Where TKey:IComparable,IFormattable

    1.1K50发布于 2018-03-05
  • 来自专栏技术博客

    编写高质量代码改善C#程序的157个建议[为类型输出格式化字符串、实现浅拷贝和深拷贝、用dynamic来优化反射]

    一种是意识到类型会产生格式化字符串输出,于是让类型继承接口IFormattable。这对类型来说,是一种主动实现的方式,要求开发者可以预见类型在格式化方面的要求。    但即使是重写了ToString()方法,提供的字符串输出也是非常单一的,而通过实现IFormattable接口的ToString()方法,可以让类型根据用户的输入而格式化输出。 下面我们来看一个简单的小例子: public class Person:IFormattable { public string IDCode { get; set; } 其实还有另外一种变通的形式,就是将这两种方式合并一起使用的过程,下面来看一下具体的实现代码: public class Person:IFormattable { public ; set; } public string LastName { get; set; } ///

    /// 实现接口Iformattable

    59130发布于 2018-08-31
  • 来自专栏JusterZhu

    Avalonia 11.2 正式发布:跨平台应用开发的飞跃

    实现了 IFormattable 接口: 在 KeyGesture 上实现 IFormattable 本次更新实现了 IFormattable 接口,增强了 KeyGesture 的可读性,尤其在用户界面中使用时

    1.3K10编辑于 2025-01-23
  • 来自专栏科控自动化

    [深入解析C#] 泛型

    IFormattable接口有一个满足该需求的方法:ToString(string, IFormatProvider),可是该如何确保传入的列表符合要求呢? 尽管decimal类型实现了IFormattable接口,但是它不能转换为List<IFormattable>类型。 说明 关于List<decimal>不能转换为List<IFormattable>类型的原因,第4章介绍泛型型变时会深入探讨,这里暂且只考虑泛型约束的内容。 下面解释一下这个例子中类型约束要表达的信息:PrintItems方法参数需要一个列表,其中保存的是某个类型的元素,这些元素都 要实现IFormattable接口。 通过约束,编译器就可以知道T实现了IFormattable接口,于是才会允许该T类型的值调用IFormattable.ToString(string, IFormatProvider)方法。

    2.4K10编辑于 2022-03-29
  • 来自专栏葡萄城控件技术团队

    深入浅出OOP(六): 理解C#的Enums

    : 'Enums.Derived': cannot derive from sealed type 'Enums.Color' 接下来,我们看看枚举和这3个接口的关系:IComparable, IFormattable IFormattable 1: using System; 2: 3: namespace Enums 4: { 5: internal enum Color 6: uint, long, 或ulong数据类型 默认的,enum是一个sealed类,既无法被继承 enum类型隐式实现了System.Enum enum类型继承了3个接口:IComparable, IFormattable

    90080发布于 2018-01-10
  • 来自专栏blackheart的专栏

    [C#6] 4-string 插值

    "; 10 //支持的隐式类型转换 11 IFormattable s5 = $"Hello, {person.Name}"; 12 FormattableString s6 = $"Hello, {person.Name }" 新语法支持表达式求值,支持:格式化操作,还支持到IFormattable的隐式转换,编译结果是利用 System.Runtime.CompilerServices.FormattableStringFactory.Create

    77760发布于 2018-01-19
  • 来自专栏博客园

    .NET面试题解析(02)-拆箱与装箱

    int i = 5; object obj = i; IFormattable ftt = i; Console.WriteLine(System.Object.ReferenceEquals(i, obj int i = 5; object obj = i; IFormattable ftt = i; Console.WriteLine(System.Object.ReferenceEquals(i, obj

    70240发布于 2018-08-31
  • 来自专栏博客园

    .NET面试题解析(02)-拆箱与装箱

    int i = 5; object obj = i; IFormattable ftt = i; Console.WriteLine(System.Object.ReferenceEquals(i, obj int i = 5; object obj = i; IFormattable ftt = i; Console.WriteLine(System.Object.ReferenceEquals(i, obj

    56920发布于 2019-02-25
  • 来自专栏全栈程序员必看

    java中stringBuilder常用方法[通俗易懂]

    (2)AppendFormat   AppendFormat方法将文本添加到 StringBuilder的结尾处,而且实现了 IFormattable接口,因此可接受格式化部分中描述的标准格式字符串。

    1.1K10编辑于 2022-09-09
  • 来自专栏分布式系统和大数据处理

    编写高质量代码:改善C#程序的157个建议

    类型格式化字符串 IFormattable和IFormatProvider的用法。这个两个接口项目中不常使用,但是IFormatProvider倒是可以作为分离变化的教程来学习。

    3.2K30发布于 2018-09-30
  • 来自专栏菩提树下的杨过

    运算符重载,以及迭代器[foreach]示例

        }     /// 

        /// 声明一个矢量类(包含基本的x,y,z三个分量)     ///      struct Vector : IFormattable

    84080发布于 2018-01-22
  • 来自专栏DotNet NB && CloudNative

    停止使用==和!=来判断浮点数是否相等

    publicstaticboolAreAlmostEqual<T>(thisT a,T b,double epsilon = ModuleConstants.Epsilon)whereT:struct,IComparable,IConvertible,IFormattable publicstaticboolIsGreaterThan<T>(thisT a,T b,double epsilon = ModuleConstants.Epsilon)whereT:struct,IComparable,IConvertible,IFormattable

    54610编辑于 2024-12-20
  • 来自专栏GreenLeaves

    C# String.Format的格式限定符与Format方法将多个对象格式化一个字符串原理

    方法将多个对象格式化成一个字符串Format方法解析格式字符串的原理: (1)、格式字符串中的{0}会被替换成格式字符串之后的第一个参数,以此类推 (2)、Format方法解析格式字符串时,发现可替换参数0,则调用对应参数的IFormattable 如果格式化字符串中的可替换参数0后面跟着格式限定符.则将格式限定符传递给ToString方法.没有则传递默认的方法. (3)、、Format方法解析格式字符串时,发现可替换参数0,如果对应参数没有继承IFormattable 接口,则调用该类型的ToString()方法,没有则调用Object的ToString方法. var str = string.Format("没有继承IFormattable接口的自定义类型:{0}, 继承了IFormattable接口的自定义类型:{1}", new Program(),1); Console.WriteLine(str); ?

    6.8K20发布于 2018-08-01
  • 来自专栏DotNet NB && CloudNative

    C#有什么惊艳到你的地方?

    4、继承、泛型、接口、类型约束等等高级特性,都有着良好且自洽的设计 最初接触C#的时候,看看int的原型,收获很大: public struct Int32 : IFormattable, IConvertible

    46740编辑于 2023-11-15
  • 来自专栏U3D技术分享

    《CLR via C#》笔记:第3部分 基本类型(2)

    4、在两个数组之间复制时,如果仅从数组类型证明不了两者的兼容性,比如从 Object[转型为IFormattable[],就根据需要对元素进行向下类型转换。 如果 Object[]中的每个对象都实现了IFormattable,Copy方法就能成功执行。 System.Buffer的BlockCopy支持同类型数组的简单复制。

    1.2K10编辑于 2022-09-21
  • 来自专栏全栈程序员必看

    C# 之 System.Object

    继承类能够重写该方法,以便自己定义显示输出内容,假设继承类须要控制很多其它格式化输出,则须要实现IFormattable接口 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn

    77320编辑于 2022-07-12
领券