11 2012 档案
摘要:一次在论坛上碰到某人需要动态用C#在后台输出“我要'飞'”的字符串——其中“飞”上带有一对单引号。当时我就这样想……在纯Html中js代码这样写:<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> &l
阅读全文
摘要:现在假定有两张表tb_Category和tb_Product(它们属于一对多关系),其中Product中的Cid是Category的外键。表结构如下:转化成LINQ-TO-SQL之后模型类如下:现在如果删除一个Category的话会抛出“外键冲突”等异常——究其原因,在于外键如果引用该主键,那么该主键不应该被删除。怎么解决呢?LINQ-TO-SQL没有提供类似直接解决方案。我们可以这样做:一、先从后主:所谓“先从后主”就是说先把要删除的Category(假设就是第一个Category)下面的所有的Products给删除,最后把Category也删除。代码如下:[C#]using (MyDbCo
阅读全文
摘要:一次在开发一个3D“点”用户Web控件的时候用了结构体,结果碰到了小问题,先给出代码(核心部分):[C#]namespace CSharp{ namespace CSharp { /// <summary> /// 三维坐标的Struct结构 /// </summary> [TypeConverter(typeof(MyConvertor))] public struct DPoint { private double _x; private double...
阅读全文
摘要:面向对象程序设计最基本的一个特点在于类可以继承——即通常我们所谓之“代码复用”原则优先。继承可以来自一个普通类,也可以来自一个抽象类,那么哪个更好一些呢?或者继承自普通类和抽象类在应用上有何区别呢?今天主要来讨论这个问题。一、继承自普通类+virtual方法:譬如我设计了一个点的类(Point),这个“点”类其中包含X,Y两个基本公共属性。那么以后随着需求增加我或许要定义一个三维的店DPoint,由于从数学角度分析,三维坐标比二维坐标只是多了一个Z,其余属性基本相似。因此直接可以通过继承二维坐标的Point类扩展一个Z属性即可。进一步考虑。如果我已知一个点,输入另外一个点的坐标或者实体类,求该
阅读全文
摘要:一、“接口”初步:从OOP设计角度来分析,“接口”是一个很特殊的“类”,特殊之处在于:1)不能为接口中定义的方法添加关键字(只允许是public)。2)可以定义事件/方法/属性,但都无法实现(只能让实现类去实现)。以上这些限制了接口的应用范围——意味着接口只是作为一个对类的契约而存在,谈不上“代码复用”(因为接口自身不能定义方法,自然实现类无法调用它们,也就不构成重载/重写的概念了),也根本不存在“继承”的概念。因此“接口”的关键字是Implement而不是Inherit(在C#中则都是英文状态的冒号)。由接口自身的定义,我们联想到最简单的接口应用就是强制某个类必须具备某种方法,譬如说我要设计
阅读全文