小编Tri*_*nko的帖子

在什么情况下SqlConnection会自动登记在环境TransactionScope事务中?

SqlConnection在事务中"登记"是什么意思?它只是意味着我在连接上执行的命令将参与事务吗?

如果是这样,在什么情况下SqlConnection会自动登记在环境TransactionScope事务中?

查看代码注释中的问题.我对每个问题的答案的猜测都在括号中的每个问题之后.

场景1:在事务范围内打开连接

using (TransactionScope scope = new TransactionScope())
using (SqlConnection conn = ConnectToDB())
{   
    // Q1: Is connection automatically enlisted in transaction? (Yes?)
    //
    // Q2: If I open (and run commands on) a second connection now,
    // with an identical connection string,
    // what, if any, is the relationship of this second connection to the first?
    //
    // Q3: Will this second connection's automatic enlistment
    // in the current transaction scope cause the transaction to …
Run Code Online (Sandbox Code Playgroud)

c# ado.net sqlcommand sqlconnection transactionscope

198
推荐指数
2
解决办法
3万
查看次数

如何使内联块元素填充该行的其余部分?

是否可以使用CSS和两个内联块(或其他)DIV标签而不是使用表?

表格版本为此(添加了边框以便您可以看到它):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>
<table style="width:100%;">
<tr>
<td style="border:1px solid black;width:100px;height:10px;"></td>
<td style="border:1px solid black;height:10px;"></td>
</tr>
</table>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

它会生成一个左侧列,其中包含固定宽度(不是百分比宽度),右侧列会扩展以填充线上的剩余空间.听起来很简单吧?此外,由于没有任何东西被"浮动",因此父容器的高度适当地扩展以包含内容的高度.

--BEGIN RANT--
我已经看到了具有固定宽度侧柱的多列布局的"清晰修复"和"圣杯"实现,它们很糟糕并且它们很复杂.它们反转元素的顺序,它们使用百分比宽度,或者它们使用浮点数,负边距,并且"左","右"和"边距"属性之间的关系是复杂的.此外,布局是亚像素敏感的,因此即使添加单个边框,填充或边距像素也会破坏整个布局,并将整个列包装发送到下一行.例如,即使你尝试做一些简单的事情,例如将4个元素放在一行上,每个宽度设置为25%,舍入错误也是一个问题.
--END RANT--

我尝试过使用"inline-block"和"white-space:nowrap;",但问题是我无法获得第二个元素来填充线上的剩余空间.将宽度设置为"width:100% - (LeftColumWidth)px"在某些情况下会起作用,但实际上不支持在width属性中执行计算.

css layout fixed-width

177
推荐指数
4
解决办法
12万
查看次数

如何在HTML/CSS中创建稳定的两列布局

我想要一个有两列的容器.细节:

容器

  • 宽度应调整为其父元素的100%(容易完成).
  • 高度必须调整为包含两列(即它的高度应该完全等于两列的较大高度,因此没有溢出和滚动条永远不会显示)
  • 应该具有等于左列宽度的两倍的最小尺寸.

一般的列

  • 应该是可变高度,调整到其内容的高度.
  • 应该是并排的,使它们的顶边成一直线.
  • 如果边界,填充或边距的单个像素被应用于任何一个像素,则不应该破坏布局或彼此包裹,因为这将是非常不稳定和不幸的.

左列专门

  • 必须具有固定的绝对宽度(以像素为单位).

正确的专栏

  • 宽度必须填充容器中的剩余空间.换一种说法...
  • 宽度必须等于容器宽度减去左列的宽度,这样如果我在此列中放置一个DIV块元素,将其宽度设置为100%,给它一个类似10px的高度,并给它一个背景颜色,我将看到一个10px高的彩色条带,从左列的右边缘到容器的右边缘(即它填充右列的宽度).

要求稳定

容器应该能够调整大小(通过调整浏览器窗口大小)到最小宽度(前面指定)或更大的宽度而不破坏布局."Breaking"将包括左列改变大小(记住它应该具有固定的像素宽度),右列包裹在左侧,滚动条出现,右列中的块元素未能占用整个列宽并且通常任何上述规范都不能保持真实.

背景

如果使用浮动元素,则右列不应该在左侧包裹,容器将无法包含两列(通过剪切列的任何部分或允许列的任何部分溢出其边界) ),或者那个滚动条会出现(所以我厌倦了建议使用溢出以外的任何东西:隐藏以触发浮动元素遏制).将边框应用于列不应该破坏布局.列的内容,尤其是右列的内容,不应破坏布局.

似乎有一个简单的基于表格的解决方案,但在任何情况下它都会失败.例如,在Safari中,如果容器太小,我的固定宽度左列将收缩,而不是保持我指定的宽度.似乎应用于TD元素的CSS宽度指的是最小宽度,这样如果在其中放置更大的东西,它将扩展.我尝试过使用table-layout:fixed; 没有帮助.我还看到了表示右列的TD元素不会扩展以填充剩余区域的情况,或者它会出现(例如第三列1px宽将被一直推到右侧),但是在右列周围放置一个边框将显示它仅与其内联内容一样宽,并且宽度设置为100%的块级元素不会填充列的宽度,而是匹配内联内容的宽度(即TD的宽度似乎完全取决于内容).

我看到的一个可能的解决方案太复杂了; 我不在乎IE6,只要它适用于IE8,Firefox 4和Safari 5.

html css resizable two-column-layout

51
推荐指数
2
解决办法
11万
查看次数

C#中泛型类的算术运算符重载

给出类似的泛型类定义

public class ConstrainedNumber<T> :
    IEquatable<ConstrainedNumber<T>>,
    IEquatable<T>,
    IComparable<ConstrainedNumber<T>>,
    IComparable<T>,
    IComparable where T:struct, IComparable, IComparable<T>, IEquatable<T>
Run Code Online (Sandbox Code Playgroud)

如何为它定义算术运算符?

以下内容无法编译,因为'+'运算符不能应用于类型'T'和'T':

public static T operator +( ConstrainedNumber<T> x, ConstrainedNumber<T> y)
{
    return x._value + y._value;
}
Run Code Online (Sandbox Code Playgroud)

正如您所见,泛型类型'T'受'where'关键字约束,但我需要对具有算术运算符的数字类型(IArithmetic?)进行约束.

'T'将是一个原始数字类型,如int,float等.这些类型是否存在'where'约束?

c# generics math operator-overloading primitive-types

30
推荐指数
4
解决办法
2万
查看次数

.NET String.Length属性返回什么?代替中性长度或完整字符长度

文档和语言在VS 2008和2010之间有所不同:


VS 2008文档

在内部,文本存储为Char对象的只读集合,每个Char对象代表一个以UTF-16编码的Unicode字符.... 字符串的长度表示字符数,无论字符是否由Unicode代理项对形成.要访问字符串中的各个Unicode代码点,请使用StringInfo对象.- http://msdn.microsoft.com/en-us/library/ms228362%28v=vs.90%29.aspx


VS 2010文档

在内部,文本存储为Char对象的顺序只读集合.... 字符串的Length属性表示它包含的Char对象的数量,而不是Unicode字符的数量.要访问字符串中的各个Unicode代码点,请使用StringInfo对象.- http://msdn.microsoft.com/en-us/library/ms228362%28v=VS.100%29.aspx

两种情况下使用的语言都没有明确区分"字符","Unicode字符","字符类","Unicode代理项对"和"Unicode代码点".

VS2008文档中的语言声明"字符串表示字符数,无论字符是否由Unicode代理项对形成"似乎将"字符"定义为可能是Unicode代理项对的结果的对象,这表明它可能代表一个4字节的序列而不是一个2字节的序列.它还特别指出一个"char"对象以UTF-16编码,这表明它可以代表一个代理对(4个字节而不是2个字节).我很确定这是错的.

VS2010文档更加精确.它区分了"char"和"Unicode character",但不区分"Unicode character"和"Unicode code point".如果代码点引用代理对的一半,并且"Unicode字符"代表完整对,则"Char"类的名称不正确,并且根本不引用"Unicode字符"(他们声明它不),它真的是一个Unicode代码点.

那么以下两个陈述都是真的吗?(是的,我认为.)

  1. String.Length表示Unicode代码点长度,和
  2. String.Length既不表示Unicode字符长度,也不表示我们认为是真正的字符长度(将显示的字符数),而是表示"Char"对象的数量,每个对象代表一个Unicode代码点(不是Unicode字符).

.net c# string unicode

23
推荐指数
2
解决办法
4087
查看次数

如何配置IIS Express以调试子目录中的应用程序?

我的Web应用程序通常位于IIS中根目录的子目录中.假设子目录是"app"

当我尝试在Visual Studio中调试它时,路径始终以localhost为根,没有子目录.这会扰乱我在应用程序中的路径.

当我尝试从改变项目URL的形式http://localhost:port/,以 http://localhost:port/app它只是说"无法创建虚拟目录".好吧,这是它第一次说的,直到我从application.config文件中删除了应用程序条目,然后它成功了.

当我尝试"覆盖应用程序根URL"到同一件事时,它只是不起作用.它要么得到一个错误500.0内部服务器错误,或者在某些情况下它就像它将应用程序的web.config文件应用于根目录和虚拟子目录,因为它给出了一个错误,我正在尝试添加一个模块已被添加(可能在根目录中).

我已尝试在IIS Express的application.config中编辑项目的设置,但似乎没有设置组合.

我不明白为什么visual studio将项目置于IIS Express根目录下,当它知道该项目是在子目录中部署到IIS时.我认为它应该默认匹配目录结构.

这就是现在的样子:

<site name="app" id="5">
   <application path="/" applicationPool="Clr4IntegratedAppPool">
     <virtualDirectory path="/app" physicalPath="C:\Users\username\Desktop\wwwroot\app" />
   </application>
   <bindings>
     <binding protocol="http" bindingInformation="*:3056:localhost" />
   </bindings>
</site>
Run Code Online (Sandbox Code Playgroud)

如果我将应用程序路径更改为"/ app",则它会给出错误500.19,说配置无效.如果我执行相同操作并删除虚拟目录标记,则无法完全启动IIS Express.

asp.net debugging configuration virtual-directory

23
推荐指数
1
解决办法
1万
查看次数

我可以测试互联网上的任何地方是否有rtmp(协议)URL?

我正在基于NetStream构建一个基于Flash的视频播放器,我需要测试的是一个正常运行的RTMP网址,但我无法通过谷歌在整个互联网上找到一个.

是否有人知道我可以用来测试这个东西的任何有效的样本rtmp流及其URL?

sample rtmp

20
推荐指数
1
解决办法
6万
查看次数

参考平等性能差异?((object)obj1 ==(object)obj2)vs.object.ReferenceEquals(obj1,obj2)

使用该object.ReferenceEquals方法使用时会有额外的开销((object)obj1 == (object)obj2)吗?

在第一种情况下,将涉及静态方法调用,并且在两种情况下都涉及到对象的某种形式的转换.

即使编译器平衡了那些方法,那么不等式呢?

(object)obj != null
Run Code Online (Sandbox Code Playgroud)

相比于...

!object.ReferenceEquals(obj,null)
Run Code Online (Sandbox Code Playgroud)

我想在某些时候,会在!=运算符内或者应用于ReferenceEquals方法的结果时发生逻辑否定.你怎么看?

还有可读性问题需要考虑.在检查相等性时,ReferenceEquals似乎更清晰,但是对于不平等,可能会错过!前面的内容object.ReferenceEquals,而!=第一个变体中很难忽略.

c# performance coding-style readability equality

19
推荐指数
2
解决办法
9606
查看次数

如何干净地关闭以Process.Start开头的控制台应用程序?

这看起来像是一项不可能的任务.绝对没有我找到的作品.问题是如何干净地关闭以Process.Start启动的控制台应用程序,该控制器应用程序在没有控制台窗口且没有使用shell执行的情况下启动:( ProcessStartInfo.CreateNoWindow = true; ProcessStartInfo.UseShellExecute = false;).

如果它接收到ctrl-c或ctrl-break信号,那么正在启动的应用程序将"干净地"关闭,但似乎没有办法发送一个有效的应用程序(特别是GenerateConsoleCtrlEvent).

  • Process.Kill不起作用.由于突然杀死进程,它会留下损坏的文件.
  • Process.CloseMainWindow不起作用.在这种情况下没有主窗口,因此该函数返回false并且什么都不做.
  • 在进程的所有线程上调用EnumThreadWindows并向每个窗口发送WM_CLOSE都没有做任何事情,并且无论如何都没有任何线程窗口.
  • GenerateConsoleCtrlEvent不起作用.它仅适用于同一组中的进程(.NET无法控制),无论如何都会关闭调用进程产生不必要的副作用.该功能不允许您指定进程ID.

任何能够提供接受"Process"对象的代码的人都将被标记为答案,该代码以上述参数开始,这些对象导致已启动进程的干净关闭而不影响调用进程.使用7z.exe(7-zip归档程序)作为示例控制台应用程序,它开始压缩大文件,如果没有干净地终止,将留下损坏的未完成文件.

直到有人提供了通向功能示例的功能例子或代码,这个问题没有答案.我见过几十个人在网上问这个问题和几十个答案,但都没有..NET似乎不支持干净地关闭控制台应用程序给定其进程ID,考虑到它是从.NET进程对象开始的,这很奇怪.部分问题是无法在新进程组中创建进程,这使得使用GenerateConsoleCtrlEvent无用.必须有一个解决方案.

.net process console-application break

19
推荐指数
2
解决办法
5055
查看次数

如何使用CSS为带有静态字符串的有序列表项编号加前缀?

我想要这个HTML ...

<ol style="list-style:decimal;">
<li>Apples</li>
<li>Oranges</li>
</ol>
Run Code Online (Sandbox Code Playgroud)

......像这样呈现

Q1.苹果
Q2.桔子

换句话说,我希望自动生成的数字以静态字符串"Q"为前缀.

我试过像这样的CSS:

ol li:before
{
  content:"Q";
}
Run Code Online (Sandbox Code Playgroud)

但这产生了这个:

  1. QApples
  2. QOranges

我也尝试过使用"list-style:numbers inside;",但这只是将列表向右移动,结果相同.我找不到以任何方式引用自动生成的数字元素以向其添加CSS样式信息的方法.这看起来像是一个简单,常见的场景,但我找不到任何方法用简单的CSS(没有CSS计数器,JavaScript等)来实现它.

html css prefix html-lists

17
推荐指数
1
解决办法
2万
查看次数