小编Ais*_*ina的帖子

使用反射在C#中创建没有默认构造函数的类型实例

以下面的课程为例:

class Sometype
{
    int someValue;

    public Sometype(int someValue)
    {
        this.someValue = someValue;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我想使用反射创建这种类型的实例:

Type t = typeof(Sometype);
object o = Activator.CreateInstance(t);
Run Code Online (Sandbox Code Playgroud)

通常这会起作用,但是由于SomeType没有定义无参数构造函数,调用Activator.CreateInstance将抛出类型异常,MissingMethodException并带有消息" 没有为此对象定义无参数构造函数. "是否还有另一种方法可以创建此类型的实例?将无参数构造函数添加到我的所有类中会有点麻烦.

c# reflection instantiation default-constructor

91
推荐指数
3
解决办法
8万
查看次数

项目欧拉#15

昨晚我试图解决Project Euler挑战赛#15:

从2×2网格的左上角开始,右下角有6条路线(没有回溯).

alt text http://projecteuler.net/project/images/p_015.gif

通过20×20网格有多少条路线?

我认为这不应该这么难,所以我写了一个基本的递归函数:

const int gridSize = 20;

// call with progress(0, 0)
static int progress(int x, int y)
{
    int i = 0;

    if (x < gridSize)
        i += progress(x + 1, y);
    if (y < gridSize)
        i += progress(x, y + 1);

    if (x == gridSize && y == gridSize)
        return 1;

    return i;
}
Run Code Online (Sandbox Code Playgroud)

我确认它适用于较小的网格,如2×2或3×3,然后将其设置为运行20×20网格.想象一下,当5小时之后,程序仍然愉快地处理数字,并且只完成了大约80%(基于检查其在网格中的当前位置/路线),这让我感到惊讶.

显然,我正在以错误的方式解决这个问题.你会如何解决这个问题?我认为它应该使用方程而不是像我的方法来解决,但不幸的是,这不是我的强项.

更新:

我现在有一个工作版本.基本上它缓存了在仍然需要遍历×m块之前获得的结果.以下是代码以及一些注释:

// the size of our grid
static int gridSize = 20; …
Run Code Online (Sandbox Code Playgroud)

c# math

45
推荐指数
5
解决办法
2万
查看次数

Code Golf:Tic Tac Toe

按字符数发布您的最短代码,以检查玩家是否赢了,如果是,那么.

假设你在变量b(board)中有一个整数数组,它包含Tic Tac Toe板,以及玩家的移动:

  • 0 =没有设置
  • 1 =玩家1(X)
  • 2 =玩家2(O)

所以,鉴于阵列b = [ 1, 2, 1, 0, 1, 2, 1, 0, 2 ]将代表董事会

X|O|X
-+-+-
 |X|O
-+-+-
X| |O
Run Code Online (Sandbox Code Playgroud)

对于这种情况,您的代码应该输出1以指示玩家1赢了.如果没有人赢了你可以输出0false.

我自己的(Ruby)解决方案即将推出.

编辑:对不起,忘了将其标记为社区维基.您可以假设输入格式正确,不必进行错误检查.


更新:请以函数的形式发布您的解决方案.大多数人已经这样做了,但有些人没有,这不完全公平.电路板作为参数提供给您的功能.结果应该由函数返回.该函数可以具有您选择的名称.

code-golf tic-tac-toe rosetta-stone

42
推荐指数
7
解决办法
8340
查看次数

在MySQL中的子查询上使用GROUP_CONCAT

我有一个MySQL查询,我想在其中包含另一个表中的ID列表.在网站上,人们可以添加某些项目,然后人们可以将这些项目添加到他们的收藏夹中.我基本上想要获得那些喜欢该项目的人的ID列表(这有点简化,但这就是它归结为).

基本上,我做这样的事情:

SELECT *,
GROUP_CONCAT((SELECT userid FROM favourites WHERE itemid = items.id) SEPARATOR ',') AS idlist
FROM items
WHERE id = $someid
Run Code Online (Sandbox Code Playgroud)

通过这种方式,我可以通过在我的代码中进一步将id列表转换为PHP中的数组来显示谁喜欢某个项目,但是我收到以下MySQL错误:

1242 - 子查询返回超过1行

我认为这有点使用GROUP_CONCAT而不是,例如,CONCAT?我是以错误的方式来做这件事的吗?


好的,感谢到目前为止的答案,这似乎有效.然而,有一个问题.如果该项目由该用户添加,则该项目也被视为最受欢迎.所以我需要额外的检查以检查creator = userid.有人可以帮我提出一个聪明(并希望有效)的方法吗?

谢谢!

编辑:我只是试图这样做:

SELECT [...] LEFT JOIN favourites ON (userid = itemid OR creator = userid)
Run Code Online (Sandbox Code Playgroud)

IDLIST是空的.请注意,如果我使用INNER JOIN而不是LEFT JOIN我得到一个空的结果.即使我确信有些行符合ON要求.

mysql sql group-concat mysql-error-1242

41
推荐指数
2
解决办法
7万
查看次数

如何阻止Google Chrome阻止我的弹出窗口?

在我的网站上有一个按钮,用于调用一个调用的函数window.open,但是,最近在弹出窗口打开之前需要进行调整以进行服务器端检查.

自从添加了代码进行AJAX调用之后,浏览器就会阻止弹出窗口,这是在successAJAX调用的回调中打开的.我读过,如果没有用户点击事件调用,浏览器可能会阻止弹出窗口,所以我尝试将AJAX请求设置为async: false,这解决了Firefox中的问题,但谷歌Chrome仍然阻止我的弹出窗口.有没有办法解决这个问题?

我可以将服务器端检查移动到弹出窗口中打开的页面,但是如果可能的话,我想在打开弹出窗口之前执行此操作.

码:

<a id="attackButton" href="#">Attack Base!</a>

<script type="text/javascript">
$(function() {
    $('#attackButton').click(function() {
        $.ajax({
            url: baseurl + '/index.php?option=com_pbbgs&format=raw&getinfo=goingame',
            data: { 'gameid': 618 },
            dataType: 'text',
            async: false,
            type: 'POST',
            success: function(data) {
                eval(data);

                if (window.gameURL) {
                    goingameRaw();
                }
            }
        });

        return false;
    });
});

function goingameRaw()
{
    window.open(window.gameURL,'test','left=20,top=20,width=1024,height=640,toolbar=0,resizable=0,location=0');
}
</script>
Run Code Online (Sandbox Code Playgroud)

响应体示例:

window.gameURL="http://mydomain.com/index.php?option=com_pbbgs&format=raw&startgame=618&width=1024&height=640";checktutorial('js','attack');
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome popup popup-blocker

38
推荐指数
3
解决办法
8万
查看次数

在加载之前隐藏的iframe的Javascript问题

我有一个页面,其中包含iframe使用Javascript加载的页面:

的index.html

<iframe id="myFrame" width="800" height="600" style="display: none;"></iframe>
<div id="loader"><!-- some loading indicator --></div>

<script type="text/javascript">
function someFunction() {
  var myFrame = document.getElementById('myFrame');
  var loader = document.getElementById('loader');

  loader.style.display = 'block';

  myFrame.src = 'myFrame.html';
  myFrame.onload = function() {
    myFrame.style.display = 'block';
    loader.style.display = 'none';
  };
}
</script>
Run Code Online (Sandbox Code Playgroud)

加载的页面iframe包含一些Javascript逻辑,用于计算某些元素的大小,以便添加JS驱动的滚动条(jScrollPane + jQuery Dimensions).

myFrame.html

<div id="scrollingElement" style="overflow: auto;">
  <div id="several"></div>
  <div id="child"></div>
  <div id="elements"></div>
</div>

<script type="text/javascript">
$(document).load(function() {
  $('#scrollingElement').jScrollPane();
});
</script>
Run Code Online (Sandbox Code Playgroud)

这适用于Chrome(可能还有其他Webkit浏览器),但在Firefox和IE中失败,因为在jScrollPane调用时,所有元素仍然是隐形的,jQuery Dimensions无法确定任何元素的维度.

有没有办法确保被叫 …

javascript iframe jscrollpane

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

何时在XNA中使用多个精灵批次?

在XNA中,什么时候使用多个spritebatch渲染你的游戏内容?到目前为止,我从未使用过多个,并且从未注意到这种方法有任何缺点.

在什么情况下会建议使用多个spritebatches甚至是必要的?

xna

11
推荐指数
1
解决办法
7914
查看次数

优雅地检查给定日期是否是昨天

假设你有一个Unix时间戳,那么检查该时间戳是否是昨天某个时间的简单和/或优雅的方法是什么?

我主要在Javascript,PHP或C#中寻找解决方案,但也欢迎伪代码和语言无关的解决方案(如果有的话).

javascript php c# language-agnostic unix-timestamp

11
推荐指数
4
解决办法
8755
查看次数

找出某种计算出的 CSS 样式的原因

<div>在一个网页上有一个 633px 的计算高度属性。这未在任何级联样式表中设置,无论是否内联,也未在 javascript 中设置。我在我的代码中到处搜索,但数字 633 没有出现在任何地方。我可以通过设置style="height: 420px;"我想要的高度来解决这个问题,但 IE 似乎将其覆盖为 633px,我也会在其他浏览器中默认设置。我已经在 Google Chrome 和 Firefox/Firebug 中验证了 div 的实际内容远不及 633 像素高。有什么办法可以找出这个计算高度的原因吗?为完整起见,以下是 Google Chrome 报告的<div>.

Computed Style
background-color: white;
display: block;
float: left;
height: 633px;
margin-left: 30px;
margin-top: 20px;
padding-bottom: 0px;
padding-left: 0px;
padding-right: 0px;
padding-top: 0px;
width: 830px;

Inline Style Attribute
margin-left: 30px;
margin-top: 20px;

#overview
background-color: white;
float: left;
padding: 0px;
width: 830px;

#overview, #overviewempty
margin-top: 9px; (is crossed out)

div
display: block;
Run Code Online (Sandbox Code Playgroud)

提前致谢。 …

html css computed-style

7
推荐指数
1
解决办法
9187
查看次数

IE Javascript错误"对象不支持此属性或方法"在jQuery中

出于某种原因,我在jquery.js(版本1.4.3,非压缩版本)的第3156行的Internet Explorer 8中收到以下Javascript错误:Object doesn't support this property or method.Firefox和谷歌浏览器中没有错误.

这是错误发生的行:

if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
Run Code Online (Sandbox Code Playgroud)

Investigation(console.log(Expr.leftMatch[type]))产生以下有趣结果:在谷歌浏览器中输出

/(^(?:.|\r|\n)*?):((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\3\))?(?![^\[]*\])(?![^\(]*\))/
Run Code Online (Sandbox Code Playgroud)

但是在Internet Explorer中,这是输出:

function() {
  var p = this;
  do p = p.previousSibling;
  while (p && p.nodeType != 1);
  return p;
}
Run Code Online (Sandbox Code Playgroud)

其中exec无法调用(未定义).jquery.js中不存在引用的函数.有没有人知道为什么会发生这种情况,或者我能做些什么来解决它?

遗憾的是,我还没有能够创建一个简单的脚本来重现这个问题,虽然我确实找到了这个有同样问题的帖子,但它没有提供解决方案(最后一篇文章建议该页面应该运行标准模式,但我的已经是).

javascript jquery internet-explorer sizzle

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