自定义类型转化

string num1 = "12";
string num2 = "13";
int num3;
int num4 = 77;
bool bo;
num3 = int.Parse(Convert.ToString(num2));
bo = int.TryParse(Convert.ToString(num1), out num4);

Console.Write(num3 +","+bo +","+num4 );

int.TryParse(string ,out int ) //把string 字符串转化为int类型。成功返回true,失败返回false. int 型参数成功返回转化过的值,失败返回0。
int.Parse(string ); //把string 参数转化为int值。
1。字符串为空,抛出ArgumentNullException异常。
2.不是数字,抛出FormatException
3.数字超出int 型范围。抛出OverflowException

自定义类型转化。
operator:
public static result-type unary-operator(op-type operand) //一元运算符重载
public static result-type binary-operator(op-type operand ,op-type2 operand2) //二元运算符重载
implicit://隐性转化
public static implicit operator conv-type-out (conv-type-in operand)
explicit://显示转化
public static explict operator conv-type-out(conv-type-in operand)

1.result-type 运算符的结果类型。
2.unary-operator 下列运算符之一:+ - ! ~ ++ — true false
3.op-type 第一个(或唯一一个)参数的类型。
4.operand 第一个(或唯一一个)参数的名称。
5.binary-operator 其中一个:+ - * / % & | ^ << >> == != > < >= <=
6.op-type2 第二个参数的类型。
7.operand2 第二个参数的名称。
8.conv-type-out 类型转换运算符的目标类型。
9.conv-type-in 类型转换运算符的输入类型。

DEMO:
public struct Student
{

private uint yuan;

public uint Yuan
{
get { return yuan; }
set { yuan = value; }
}
private uint jiao;

public uint Jiao
{
get { return jiao; }
set { jiao = value; }
}
private uint fen;

public uint Fen
{
get { return fen; }
set { fen = value; }
}

public Student(uint yuan,uint jiao,uint fen)
{
if (fen > 9)
{
jiao += fen / 10;
fen = fen % 10;

}
if (jiao > 9)
{
yuan += jiao / 10;
jiao = jiao % 10;

}
this.yuan = yuan;
this.jiao = jiao;
this.fen = fen;
}
public override string ToString()
{
return string .Format("${0}元{1}角{2}分",Yuan ,Jiao ,Fen );
}
public static Student operator +( Student s1,Student s2)
{
return new Student(s1.Yuan + s2.Yuan, s1.Jiao + s2.Jiao, s1.Fen + s2.Fen);
}
public static explicit operator float(Student s1)
{
return s1.Yuan +(s1.Jiao /10.0f)+(s1.Fen /100.0f);
}
public static explicit operator Student (float f)
{
uint yuan = (uint)f;//uint 转化性能好,Convert.ToUInt32精度好,但有性能 损失。
uint jiao = (uint)((f - yuan) * 10);
uint fen = Convert.ToUInt32(((f-yuan )*100)%10);
return new Student(yuan,jiao,fen );
}
}
class Program
{
static void Main(string[] args)
{

Student s1, s2,s3,S4;
s1 = new Student(11,11,11);
s2 = new Student(5, 5, 5);
s3 = s1 + s2;
float f = (float )s3;
S4 = (Student )f;

Console.Write(s3 +","+s3.ToString() +","+f +","+S4 );

Console.ReadKey();

}
}

时间: 2024-10-12 23:02:52

自定义类型转化的相关文章

struts2 之类型转化&amp;日期

Struts中的基本类型是可以通过struts的默认类型转化器转化的..日日类型默认的是1992-02-03这样的格式,如果我们填写1992年02月03日,name就会报错...因此我们需要进行类型转化... 1.局部类型转化器: 开发步骤: (1)写一个类型转化器继承StrutsTypeConverter这个类. (2)在要转化的类的同级目录下写一个和ActionName-conversion.properties的配置文件,如我这里要转化的是UserAction类中date类型... (3)

Asp.net 面向接口可扩展框架之类型转化基础服务

新框架正在逐步完善,可喜可贺的是基础服务部分初具备模样了,给大家分享一下 由于基础服务涉及太广,也没开发完,这篇只介绍其中的类型转化部分,命名为类型转化基础服务,其实就是基础服务模块的类型转化子模块 说到类型转化必须要清楚.net的类型,类型都不清楚何来类型转化 1.Primitive类型 1.1 这个概念估计很多人都没听说过,Primitive不是一个新类型,而是.net类型中最基本的一种分类,是基元类型的意思       MS将类型分为三类:Primitive(基元类型).Complex(复

jQuery源码分析系列(36) : Ajax - 类型转化器

什么是类型转化器? jQuery支持不同格式的数据返回形式,比如dataType为 xml, json,jsonp,script, or html 但是浏览器的XMLHttpRequest对象对数据的响应只有 responseText与responseXML 二种 所以现在我要定义dataType为jsonp,那么所得的最终数据是一个json的键值对,所以jQuery内部就会默认帮你完成这个转化工作 jQuery为了处理这种执行后数据的转化,就引入了类型转化器,如果没有指定类型就依据响应头Con

c#自定义类型的转换方式operator,以及implicit(隐式)和explicit (显示)声明的区别

msdn参考:http://msdn.microsoft.com/zh-cn/library/s53ehcz3.aspx http://msdn.microsoft.com/zh-cn/library/z5z9kes2.aspx http://msdn.microsoft.com/zh-cn/library/xhbhezf4.aspx operator 关键字来重载内置运算符,或提供类或结构声明中的用户定义转换.它可以定义不同类型之间采用何种转化方式和转化的结果. operator用于定义类型转

springmvc 自定义类型转换器

springmvc除了自带的部分类型转换之外,还可以自定义类型转换器,按照以下步骤: 1.写一个类实现Converter接口 package com.hy.springmvc.entities; import org.springframework.core.convert.converter.Converter; import com.google.gson.Gson; public class DepartmentConvertor implements Converter<String,

Asp.net 面向接口可扩展框架之使用“类型转化基础服务”测试四种Mapper(AutoMapper、EmitMapper、NLiteMapper及TinyMapper)

Asp.net 面向接口可扩展框架的“类型转化基础服务”是我认为除了“核心容器”之外最为重要的组成部分 但是前面博文一出,争议很多,为此我再写一篇类型转化基础服务和各种Mapper结合的例子,顺便对各种Mapper做个简单的优缺点对比 我对第三方组件评介有三个标准,一.可用性,二.性能,三.易用性 本例子中四个四种Mapper以前我都没使用过(因为以前我都用自己的Mapper),本次测试可能不准确,错误的地方请大家指正 AutoMapper使用的是4.2.1.0,需要.net4.5支持(我使用N

Struts2框架的自定义类型转换器

前言:对于java的基本数据类型及一些系统类(如Date类.集合类),Struts2提供了内置类型转换功能,但是也有一定的限制.所以就演示出自定义类型转换器 一.应用于局部类型转换器 eg.用户登录出生日期只能用2016-06-09的方式才能转化成功,那么2016/06/09就不能转换成功所以就引出来我们的自定义类型转换器 1首先我们将做准备工作 1)login.jsp注册页面 <%@ page language="java" import="java.util.*&q

[原创]java WEB学习笔记67:Struts2 学习之路-- 类型转换概述, 类型转换错误修改,如何自定义类型转换器

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

springmvc_类型转化

涉及到客户端传递的数据是日期的时候,控制器方法如何处理? 服务器和浏览器之间传递的数据只有字符串格式[json],浏览器传输的数据是字符串,在springmvc中的控制器方法中,获取的时候,如果数据是基本类型或者字符串,控制器方法可以用String来接收,也可以用对应的八大基本类型来接收[springmvc会自动进行转化,springmvc中有个“转换器类”的概念]. 如果希望可以直接进行自定义类型的转化,需要自定义写转换器类. 实现Converter<String, Date>接口 案例:h