惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
T
Threatpost
阮一峰的网络日志
阮一峰的网络日志
美团技术团队
F
Fortinet All Blogs
The GitHub Blog
The GitHub Blog
月光博客
月光博客
V
Visual Studio Blog
T
Tailwind CSS Blog
Stack Overflow Blog
Stack Overflow Blog
博客园 - 聂微东
Jina AI
Jina AI
J
Java Code Geeks
Martin Fowler
Martin Fowler
大猫的无限游戏
大猫的无限游戏
Recorded Future
Recorded Future
C
Check Point Blog
腾讯CDC
N
Netflix TechBlog - Medium
aimingoo的专栏
aimingoo的专栏
罗磊的独立博客
Hacker News: Ask HN
Hacker News: Ask HN
SecWiki News
SecWiki News
博客园 - Franky
Hacker News - Newest:
Hacker News - Newest: "LLM"
N
News | PayPal Newsroom
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
Security @ Cisco Blogs
W
WeLiveSecurity
The Last Watchdog
The Last Watchdog
Cloudbric
Cloudbric
F
Full Disclosure
The Cloudflare Blog
Y
Y Combinator Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Google DeepMind News
Google DeepMind News
MongoDB | Blog
MongoDB | Blog
S
Schneier on Security
Schneier on Security
Schneier on Security
Spread Privacy
Spread Privacy
L
LINUX DO - 热门话题
AI
AI
N
News and Events Feed by Topic
T
Tor Project blog
P
Palo Alto Networks Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
H
Hackread – Cybersecurity News, Data Breaches, AI and More
G
Google Developers Blog

博客园 - 油纸伞

假如m是奇数,且m>=3,证明m(m² -1)能被8整除 SharpSvn操作 -- 获取Commit节点列表 GetRelativePath获取相对路径 Dictionary(支持 XML 序列化),注意C#中原生的Dictionary类是无法进行Xml序列化的 Winform中Checkbox与其他集合列表类型之间进行关联 Image(支持 XML 序列化),注意C#中原生的Image类是无法进行Xml序列化的 修复使用<code>XmlDocument</code>加载含有DOCTYPE的Xml时,加载后增加“[]”字符的错误 使用序列化来Clone对象 [转]PowerDesigner15生成Hibernate Net3.5及以上版本INotifyPropertyChanged接口的友好用法 知识加油站 知识加油站 Top K算法详细解析 C#值类型和引用类型 Oracle分区技术 对Oracle表分区的一点认识 oracle创建分区表 数据库大表的优化:采用蔟表(clustered tables)及蔟索引(Clustered Index) 2008年.Net编程人员工具参照
用户自定义类型的隐式转换
油纸伞 · 2012-04-12 · via 博客园 - 油纸伞

用户自定义类型的隐式转换

在做设计类的软件中,有时候会遇到米和英寸的转化,这里自己写的这两种类型的隐式转换方法。

以米为单位的长度类型定义

    

/// <summary>
    
/// 以米为单位的长度
    
/// </summary>
    public class MeterLength
    {
        public float Value { getset; }
        public UnitType Unit { get { return UnitType.Meter; } }

        public MeterLength(InchLength value)
        {
            Value = (float)(value.Value * 0.3048);
        }
        public MeterLength(float value)
        {
            Value = value;
        }
        public override string ToString()
        {
            return Value.ToString(CultureInfo.InvariantCulture) + " " + Unit;
        }
        /// <summary>
        
/// 米隐式转换为英寸
        
/// </summary>
        
/// <param name="value"></param>
        
/// <returns></returns>
        public static implicit operator InchLength(MeterLength value)
        {
            return new InchLength(value);
        }
    }

以英寸为单位的长度类型定义

    

/// <summary>
    
/// 以英寸为单位的长度
    
/// </summary>
    public class InchLength
    {
        public float Value { getset; }
        public UnitType Unit { get { return UnitType.Meter; } }

        public InchLength(float value)
        {
            Value = value;
        }
        public InchLength(MeterLength value)
        {
            Value = (float)(value.Value / 0.3048);
        }
        public override string ToString()
        {
            return Value.ToString(CultureInfo.InvariantCulture) + " " + Unit;
        }
        /// <summary>
        
/// 英寸隐式转换为米
        
/// </summary>
        
/// <param name="value"></param>
        
/// <returns></returns>
        public static implicit operator MeterLength(InchLength value)
        {
            return new MeterLength(value);
        }
    }

长度单位类型定义

    

public class UnitType
    {
        /// <summary>
        
/// 长度单位类型:米
        
/// </summary>
        public static readonly UnitType Meter = new UnitType() { Name = "Meter" };
        /// <summary>
        
/// 长度单位类型:英寸
        
/// </summary>
        public static readonly UnitType Inch = new UnitType() { Name = "Inch" };

        private UnitType() { }
        public string Name { getprivate set; }
        /// <summary>
        
/// 国际化文本显示
        
/// </summary>
        public string Text
        {
            get
            {
                //国际化的key
                string key = this.GetType().ToString() + "." + Name;
                //此处应根据key返回相应的国际化之后的文本,目前在没有国际化处理的情况下暂时返回Name
                return Name;
            }
        }
        public override string ToString()
        {
            return Text;
        }
    }

            InchLength length = new MeterLength(1);
            MessageBox.Show(length.ToString());

 本文章的目的是告诉大伙,除了float a=(float)0.111233;之外,还可以对用户定义的不同类型进行转化。

posted on 2012-04-12 21:36  油纸伞  阅读(824)  评论()    收藏  举报